4.工厂模式
Posted stupidhao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.工厂模式相关的知识,希望对你有一定的参考价值。
工厂模式:父类决定实例的生成方式,但并不决定所要生成的具体类,具体的处理细节全部交由子类做具体实现。从而可以将生成实例的框架和实际负责生成实例的类进行解耦。
是模板方法模式的典型应用。工厂模式中应会有模板方法模式的出现。
①.工厂模式分类
- 工厂方法模式
简单工厂模式:工厂方法模式的一种特例.
- 一个抽象产品类,可以派生出多个具体的产品类。
- 一个抽象工厂类,可以派生出多个具体的工厂类。
- 每一个具体工厂只能创建一个具体产品类的实例。
- 抽象工厂公式
- 多个抽象产品类,每一个抽象产品类可以派生出多个具体产品类。
- 一个抽象工厂类,可以派生出多个具体工厂类。
- 每一个具体工厂可以创建多个具体的产品类实例
区别:
# 1.工厂方法模式只存在一个抽象产品类,但抽象工厂具有多个抽象产品类。
# 2.工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个具体产品类实例。
②.工厂角色职责
Product(产品)
一个抽象类:定义工厂模式中生成的那些实例的所持有的接口。具体的处理由子类ConcreateProduct类所决定。ConcreateProduct(具体产品)
属于具体加工职责:决定了具体生产出的产品。Creator(创建者)
一个抽象类:不适用new关键字生成实例,而是通过调用生成实例的专用方法生成实例,以至于降低父类与其他类的耦合性。Creator角色对实际负责具体产品生产的ConcreateCreator角色全然不知。唯一清楚的是:只要调用Product角色和生成实例的方法,就能生成Product的实例。ConcreateCreator(具体创建者)
属于具体加工职责:负责生产出具体的抽象产品。
③.UML图
④.代码清单
⑤.注意事项
使用设计模式设计类时,开发人员必须交代清楚使用这些设计模式设计类的意图。
否则,在后续更新迭代中及其容易违背原始意图。
所以,在程序中需要注释出所有设计模式所包含的名称、意图等。
以上是关于4.工厂模式的主要内容,如果未能解决你的问题,请参考以下文章
设计模式 创建者模式 工厂设计模式 -- 抽象工厂设计模式介绍和实现