您的位置:首页 > 其它

设计模式面对面之工厂模式

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.很明显,需要根据自己的理解去合理的抽象,抽象(抽象层次要把握好)错了反而适得其反,增加了对象创建的复杂度。

三种工厂模式各有优缺点,使用的时候需要根据场景去判断,选择最优方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: