时间很快,不知不觉漫谈模式系列已经将设计模式-创建型篇写完。本文主要来简单回顾一下之前写的一些内容。
分类记忆
创建型模式大致分为如下几个部分:
创建“什么对象”
如何创建对象
只创建一个实例
使用克隆Clone复制对象
接下来,我们来回顾一下这几个模式的学习。
工厂模式
工厂模式有以下几种形态:
在学习工厂模式的时候,我们使用了导入文件处理以及导出文件处理的实例进行说明。
1、简单工厂模式
将创建实例的工作与使用实例的工作分开,使用者不必关心类对象如何创建,实现了解耦。简单工厂模式的核心工厂类,这个类集中了所有的产品创建逻辑,需要判断在什么时候创建某种产品,当有新的产品需要增加的时候,不得不修改这个核心工厂类的代码。
如上述示例中,再增加一个Pdf的文件处理器类PdfHandler,需要对核心的工厂类增加判断语句以支持新加入的产品。
2、工厂方法
工厂方法的意图定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。
使用抽象 + 多态的方式,可以保证:加入一个新的产品,在工厂方法模式中没有必要修改客户端,也没有必要修改抽象工厂角色或者其他已有的具体工厂角色。对于增加新的产品类而言,这个系统完全支持开闭原则。
3、抽象工厂
抽象工厂的意图:提供一个创建一系列或相互依赖对象的接口,而无需指定它们具体的类。支持不同产品体系结构,如我们实例中使用了导入和导出2个不同产品体系的实例。
它分离了具体的类。Abstract Factory模式帮助你控制一个应用创建的对象的类。因为一个工厂封装创建产品对象的责任和过程,它将客户与类的实现分离。Client通过他们的抽象接口操纵实例。产品的类名也在具体工厂的实现中被分离;它们不出现在客户端代码中。它有利于产品的一致性。
单例模式
单例模式从类加载的过程分为饿汉式和懒汉式。其中饿汉式可能存在多线程的问题。如:
多线程下出现创建不同实例的问题。此时,我们要解决的问题,就是如何保证线程安全,引出【线程安全策略】,包括:
从安全策略保障的思路上,我们可以编写出多种单例的实现方式。
然后,针对对象的创建方式,除了new之外,还包括克隆、反射、序列化和反序列化。我们给出了这些方式对单例的破坏和防止。
最后,对通用型写单例模版进行了尝试和阐述。
建造者模式
首先,给出了属性复杂过程中,构造函数和静态方法的使用都对对象的创建带来了挑战。
然后,以规范化日志为示例给出建造者的示例。以及给出一种Supplier实现的通用的Builder模式写法。
最后,也尝试了如果按顺序进行构建对象,引出扩展的Step Builder。
原型模式
以试卷随机组卷为示例讲解了原型模式。原型模式主要的是clone方法,涉及浅复制和深复制。以及其它深复制的工具类,如使用Apache common-lang 以及 Gson。
以上,是建造者模式的回顾和小结。接下来,将会对结构型模式进行讲解。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。