抽象工厂和工厂方法模式的比较(转载)
来源:互联网 发布:php直播间源码 编辑:程序博客网 时间:2024/05/01 04:22
来源:http://blog.csdn.net/zhengzhb/article/details/7359385/ 抽象工厂模式
http://blog.csdn.net/mark_lq/article/details/45132113 等级结构和产品族
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。
类型:创建类模式
类图:
比较:
在抽象工厂模式中,有一个产品族的概念:所谓的产品族,是指位于不同产品等级结构中功能相关联的产品组成的家族。抽象工厂模式所提供的一系列产品就组成一个产品族;而工厂方法提供的一系列产品称为一个等级结构。我们依然拿生产汽车的例子来说明他们之间的区别。
(2) 产品族:在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品,如汽车工厂生产的两厢汽车,三厢汽车,2.0排量的两厢汽车位于两厢汽车等级结构中,2.4排量的三厢汽车位于三厢汽车等级结构中,2.0排量的两厢汽车、2.4排量的三厢汽车构成了一个产品族。
等级结构和产品族详解:http://blog.csdn.net/mark_lq/article/details/45132113
车的生产类图
在上面的类图中,两厢车和三厢车称为两个不同的等级结构;而2.0排量车和2.4排量车则称为两个不同的产品族。再具体一点,2.0排量两厢车和2.4排量两厢车属于同一个等级结构,2.0排量三厢车和2.4排量三厢车属于另一个等级结构;而2.0排量两厢车和2.0排量三厢车属于同一个产品族,2.4排量两厢车和2.4排量三厢车属于另一个产品族。
明白了等级结构和产品族的概念,就理解工厂方法模式和抽象工厂模式的区别了,如果工厂的产品全部属于同一个等级结构,则属于工厂方法模式;如果工厂的产品来自多个等级结构,则属于抽象工厂模式。在本例中,如果一个工厂模式提供2.0排量两厢车和2.4排量两厢车,那么他属于工厂方法模式;如果一个工厂模式是提供2.4排量两厢车和2.4排量三厢车两个产品,那么这个工厂模式就是抽象工厂模式,因为他提供的产品是分属两个不同的等级结构。当然,如果一个工厂提供全部四种车型的产品,因为产品分属两个等级结构,他当然也属于抽象工厂模式了。
- 抽象工厂和工厂方法模式的比较(转载)
- (转载)简单工厂,工厂方法和抽象工厂模式
- 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别(转载)
- 工厂方法模式和抽象工厂模式之比较
- 工厂方法模式和抽象工厂模式之比较
- 简单工厂模式,工厂方法模式,抽象工厂模式 比较
- 简单工厂模式,工厂方法模式,抽象工厂模式 比较
- 简单工厂模式,工厂方法模式,抽象工厂模式 比较
- 简单工厂模式,工厂方法模式,抽象工厂模式 比较
- (转载)简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别
- PHP简单工厂模式、工厂方法模式和抽象工厂模式比较
- php简单工厂模式,工厂方法模式和抽象工厂模式比较
- PHP简单工厂模式、工厂方法模式和抽象工厂模式比较
- PHP简单工厂模式、工厂方法模式和抽象工厂模式比较
- 大话设计模式之简单工厂模式、抽象工厂模式及工厂方法模式的比较
- 大话设计模式之简单工厂模式、抽象工厂模式及工厂方法模式的比较
- 工厂模式与抽象工厂的比较
- 工厂方法模式和抽象工厂模式
- Androdi Studio、Eclipdse用真机调试无法打印Log的解决办法
- 开源协议 BSD、Apache、GPL、LGPL
- 【2016 ACM/ICPC Asia Regional Qingdao Online】
- asp.net repeater控件使用(自定义coulmn,分页)
- PLSQL Developer 使用记录
- 抽象工厂和工厂方法模式的比较(转载)
- 冒泡排序Java实现
- 阿里2016前端开发工程师笔试 - 关于斐波那契(fibonacci)数列的JS写法解答
- @media解决前端移动设备不兼容问题
- iOS10和Xcode8适配
- 正则表达式
- Android中利用clipchildren属性来完成子视图是否在控制范围内
- 在java中instanceof的用法?
- SSH BaseDaoImpl的一般写法