抽象工厂_笔记
抽象工厂:
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。
类型:创建类模式
类图:
调用类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
工厂模式和策略模式区别:
工厂模式和策略模式的区别在于实例化一个对象的位置不同,对工厂模式而言,实例化对象是放在服务端的,即放在了工厂类里面;
而策略模式实例化对象的操作在客户端,服务端的“销售部门”只负责传递该对象,并在服务端的环境里执行特定的操作。。。
工厂模式要求服务端的销售部门足够灵敏,而策略模式由于对策略进行了封装,所以他的销售部门比较傻,需要客户提供足够能区分使用哪种策略的参数,而这最好的就是该策略的实例了。
注:笔记部分可能参考其他作者内容的一个记录,仅为加深自己对概念的理解,这里一些可能忘记参考谁的了,所以望见谅。