创建型模式,共五种:
- 工厂方法模式、
- 抽象工厂模式、
- 单例模式、
- 建造者模式、
- 原型模式。
工厂模式
简单工厂模式
工厂类根据参数,创建产品类。
当产品类型增加时,需要修改工厂类的代码,违反了开闭原则。
工厂方法模式
定义抽象的工厂方法,将对象的实例化推迟到子类。
缺点是每增加一个产品类型,就需要增加一个工厂类,导致类的个数增加,增加了系统的复杂度。
抽象工厂模式
抽象工厂(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:使用者