设计模式学习-工厂模式,抽象工厂,原型模式,构建器
四种模式构建对象特点突出,可归结为对象创建模式
工厂模式(Factory)
- 定义
- 定义一个用于创建对象的接口,让子类决定实例化,实例化延迟。
- 通俗概括
- 通过多态特性,让用户利用子类创建对象,达到某方法里与具体类解耦目的;主要解决“单个对象”需求变化,要求创建方法/参数相同
- 模式示意图
抽象工厂(Abstract Factory)
- 定义
- 提供一个接口,让该接口负责创建一系列"相关或相互依赖的对象",无需指定他们具体的类
- 通俗概括
- 对于同类别互相依赖的对象,直接封装为一个大工厂,去创建同系列对象;对不同系列更灵活,但对系列内对象变化不便
- 模式示意图
原型模式(Prototype)
- 定义
- 使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象
- 通俗概括
- 直接在抽象基类中定义深拷贝函数,通过深拷贝(不同)自身创建对象;原型模式在复杂状态变化后,可以保留现状态下的深拷贝新对象
- 模式示意图
构建器(Builder)
- 定义
- 将一个复杂对象的构建于其表示分离,使得同样的构建过程可以创建不同的表示
- 通俗概括
- 等同于对象创建下的模板方法,构建步骤稳定,但对应步骤部分变化
- 模式示意图
四者区别
- 工厂模式适用于单一对象变化;例如 电话卡用 移动;电信;联通
- 抽象工厂适用于单一系列变化;例如 开汽车需要启动和出发; 开火车也需要启动和出发。 系列指汽车和火车
- 原型模式适用于内部变化后需要保留状态时使用;例如 再获取原材料后加工为成品1,需要一个新的成品1去打造成品2,一个新的成品1去打造成品3
- 构建器适用于类似模板流程下创建对象时;例如 我需要一把椅子,现有木头对象,需要经过稳定流程生产一个椅子