1.传统模式
传统工厂:是将对象创建和创建过程放在一个类中;
- 传统工厂: 比较好理解,简单易操作;
缺点违反了ocp原则, 即对外扩展,对修改关闭(即当我们给类增加新功能的时候,尽量不修改代码,或者尽可能少修改代码,)2.简单工厂
- 简单工厂(也称静态工厂)
简单工厂设计方案:定义一个实例化Pizza对象的类,封装创建对象的对象。
SimpleFactory 包含了chinesePizza 和createPizza2 createPizza3 创建和pizza的创建过程。
工厂方法:工厂方法模式,定义一个创建一对象的抽象方法,由子类决定要实例化的类(工厂方法将对象的实例化延迟到子类中去)
工厂方法原理图
BJOrderPizza 和LDOrderPizza 实现 了orderPizza 并且在,BJOrderPizza 和LDOrderPizza 中实现对 BJChinese BJPepperPizza 和LDChinesePizza LDPepperPizza的创建。创建过程延迟到了
代码后续补充
3. 抽象工厂
- 定义一个interface 用于创建相关或有依赖关系的对象簇,而无需指明具体的类。
- 从设计层面上,抽象工厂模式是对简单工厂的改进(或者进一步抽象)
- 将工厂抽象为两层,absFactory(抽象工厂)和具体实现工厂的类。程序员,依据依据创建对象的类型,使用对应工厂的子类。(这样简单工厂变成了工厂簇,便于代码的维护和扩展)
代码后续补充
总结
- 1.工厂模式的意义:将实例化代码提取出来,放到一个类中管理和维护,达到和主项目依赖的解耦,从而提高项目的扩展性和维护性。
- 2.三种 工厂模式 简单工厂(静态工厂),工厂方法,抽象工厂。
- 3.设计模式依赖抽象原则
(1)创建对象时不要直接new 对象,而是把new类的动作放在一个工厂的方法中,并返回。
(2)不要继承具体类,而是继续抽象或者接口类。
(3)不要覆盖基类中已经实现的方法。