抽象工厂_笔记

抽象工厂:

定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。

类型:创建类模式

类图:

调用类Client

      工厂接口IFactory 产品接口IProduct

+createProduct() +productMethod()

工厂实现 Factory 产品实现Product

抽象工厂模式与工厂方法模式的区别

抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式

的区别在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对多个产品等级结构。在编程中,

通常一个产品结构,表现为一个接口或者抽象类,也就是说,工厂方法模式提供的所有都是衍生自同一个接口或

抽象类,而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类。

在抽象工厂模式中,有一个产品族的概念:所谓产品族,是指位于不同产品等级结构中功能相关的产品组成的家族。

抽象工厂模式所提供的一系列产品就组成一个产品族;而工厂方法提供的一系列产品成为一个等级结构。

明白了等级结构和产品族的概念,就理解工厂方法模式和抽象工厂模式的区别了,如果工厂的产品不属于同一个

等级结构,则属于工厂方法模式;如果工厂的产品来自多个等级结构,则属于抽象工厂模式。

总结:

简单工厂:

1.抽象产品

2.具体产品

3.简单工厂

工厂模式:

1.抽象产品

2.具体产品

3.抽象工厂

4.具体工厂

抽象工厂模式:(1.系统中有多个产品族,而系统一次只可能消费其中一族产品2.同属于同一个产品族的产品以其使用。)有一个产品族的概念:所谓的产品族,是指位于不同产品等级结构中功能相关联的产品组成的家族

1.抽象产品

2.具体产品

3.抽象工厂

4.具体工厂

参考:http://blog.csdn.net/zhengzhb/article/details/7359385

http://www.cnblogs.com/zhangchenliang/p/3700820.html

工厂模式和策略模式区别:

工厂模式和策略模式的区别在于实例化一个对象的位置不同,对工厂模式而言,实例化对象是放在服务端的,即放在了工厂类里面;

而策略模式实例化对象的操作在客户端,服务端的“销售部门”只负责传递该对象,并在服务端的环境里执行特定的操作。。。

工厂模式要求服务端的销售部门足够灵敏,而策略模式由于对策略进行了封装,所以他的销售部门比较傻,需要客户提供足够能区分使用哪种策略的参数,而这最好的就是该策略的实例了。

 注:笔记部分可能参考其他作者内容的一个记录,仅为加深自己对概念的理解,这里一些可能忘记参考谁的了,所以望见谅。

原文地址:https://www.cnblogs.com/cangdingju/p/5520169.html