Creational Design Pattern 创建型模式

创建型模式,共五种:

  • 工厂方法模式、
  • 抽象工厂模式、
  • 单例模式、
  • 建造者模式、
  • 原型模式。

工厂模式

简单工厂模式

工厂类根据参数,创建产品类。

当产品类型增加时,需要修改工厂类的代码,违反了开闭原则。

工厂方法模式

定义抽象的工厂方法,将对象的实例化推迟到子类。

缺点是每增加一个产品类型,就需要增加一个工厂类,导致类的个数增加,增加了系统的复杂度。

抽象工厂模式

抽象工厂(Abstract Factory):接口,一套产品构造器。

抽象产品(Abstract Product):一类产品

具体产品(Concrete Product):实现了抽象产品接口, 定义了具体产品

具体工厂(Concrete Factory):实现了抽象工厂接口, 不同具体工厂 生成 不同系列产品

单例模式

  • 保证一个类只有一个实例
  • 为该实例提供一个全局访问节点。

违反 单一职责原则

实现:

  • 将默认构造函数设为私有
  • 创建静态方法,获取内部 private的实例

预加载、懒加载、线程安全、线程不安全

https://www.runoob.com/design-pattern/singleton-pattern.html

Builder Pattern 建造者模式 (生成器模式)

由 Builder 接管创建,并嵌套创建

产品 (Product) :具有复杂结构的对象,每个部件可能有不同的表现。

抽象生成器 (Builder) :接口,规定了 产品的构建步骤 和结果获取方法。

具体生成器 (ConcreteBuilder) :实现了抽象生成器接口的类,它提供了具体的创建产品对象各个部件的方法,并返回最终的产品对象。

指挥者 (Director) :负责调用生成器接口的类,它控制了产品对象的创建过程,保证各个部件按照一定顺序创建。

Prototype Pattern 原型模式

通过复制现有对象创建,而不是直接创建新对象,

组成:

  • Prototype:接口(抽象类),声明具备clone能力,例如java中得Cloneable接口
  • ConcretePrototype:具体的原型类
  • Client:使用者