设计模式面对面之工厂模式
2017-11-13 18:22
176 查看
简单工厂模式
类图:static void Main(string[] args) { var productGroup= new FactoryAbstractGroup1Generalized(); var groupProduct1 = productGroup.MadeProductA(); groupProduct1.Operation(); var groupProduct2 = productGroup.MadeProductB(); groupProduct2.Operation(); Console.ReadLine(); }
View Code
使用场景:
抽象工厂模式是抽象工厂方法模式的升级版,唯一的区别是泛化的工厂少了,维护的工厂对象少了,使工厂模式更加完美了。
抽象工厂会针对一组有关联或者相互依赖的产品做抽象,所以泛化的工厂会创建一组产品而不是一个产品。
所谓的关联指的是创建产品的方式关联或者产品间的直接关联(依赖),可以按照这些关联将它们归为一组产品去维护。比如生产床头柜和床,生产的时候床头柜和床都要遵守高低尺寸和风格搭配这些约束,此时我们可以将床头柜和床抽象成一个组产品去维护。
所谓的相互依赖指的是不同产品间是依赖关系,比如手机和电池,二者相互依赖,分离了就没意义了,生产的时候需要抽象为一组产品去维护。
优点
1.遵守了依赖倒置原则---使对象的创建延迟到了之类,不依赖具体产品,只依赖抽象产品
2.遵守了接口隔离原则---产品与产品之间隔离
3.遵守了里氏替换原则--子类实现父类所有方法
4遵守了对象开-闭原则---产品的创建只要泛化工厂就可以了,扩展好
5.遵守了单一职责原则--一个工厂一个产品,修改工厂逻辑不影响其它工厂
6.遵守了迪米特法则--工厂只知道所要创建的产品,其它产品信息不知道,知道的非常少。
7.减少了工厂对象维护量
缺点
1.很明显,需要根据自己的理解去合理的抽象,抽象(抽象层次要把握好)错了反而适得其反,增加了对象创建的复杂度。
三种工厂模式各有优缺点,使用的时候需要根据场景去判断,选择最优方式。
相关文章推荐
- 编程常用设计模式详解--(上篇)(工厂、单例、建造者、原型)
- 设计模式——工厂方法 Java源代码
- iOS常用设计模式——简单工厂设计模式
- [设计模式-创建型]工厂方法(Factory Method)
- 设计模式学习---第七节:简单工厂模式
- .NET实用设计模式:工厂模式(Factory)
- 设计模式------简单工厂模式
- 设计模式之工厂模式,单例模式,门面模式
- 工厂设计模式
- 设计模式之工厂模式(二)
- 【设计模式系列】--简单工厂模式
- 设计模式之简单工厂模式
- 设计模式——工厂模式
- 设计模式1(工厂模式)
- [笔记丶设计模式]3. 简单工厂
- 8. 工厂设计模式(factory pattern)
- 设计模式--工厂方法、抽象工厂模式
- iOS设计模式(二)----工厂模式
- java工厂设计模式
- 探索设计模式之----工厂模式