2.4 《硬啃设计模式》第6章 “妞”太多,如何管理?(3)- 抽象工厂(Abstract Factory Pattern)
2013-10-28 19:54
288 查看
我在实际工作中我也没有用过抽象工厂,下面简单谈谈我的理解,供大家参考。
类图:
说明:图中黄底色文字不是类图的一部分,仅是用来说明的。
有时候我们希望能得到一系列对象,不是一个对象,这时我们可考虑用抽象工厂,抽象工厂中有多个方法,分别得到不同的对象。
如果仅是这样,我们不需要对工厂进行抽象,抽象工厂模式中要将工厂及产品都定义为接口,其目的就是如果程序想不加区别地得多个不同系列的对象,这时就需要实现这些接口。
接口Factory定义了产生ProductA、ProductB的方法,如果需要产生更多的产品,可定义更多的方法。
ConcreteFactory1实现了Factory接口,该类专门生产ConcreteProductA1、ConcreteProductB1产品;同理ConcreteFactory2专门生产ConcreteProductA2、ConcreteProductB2产品。
这些具体工厂和产品都是实现了Factory、ProductA、ProductB接口的,故程序可以不加区别地处理。
请看下一文……
作者:张传波
创新工场创业课堂(敏捷课程)讲师
软件研发管理资深顾问
CMMI首席专家
《火球——UML大战需求分析》作者
《硬啃设计模式》作者
www.umlonline.org创办人
类图:
说明:图中黄底色文字不是类图的一部分,仅是用来说明的。
有时候我们希望能得到一系列对象,不是一个对象,这时我们可考虑用抽象工厂,抽象工厂中有多个方法,分别得到不同的对象。
如果仅是这样,我们不需要对工厂进行抽象,抽象工厂模式中要将工厂及产品都定义为接口,其目的就是如果程序想不加区别地得多个不同系列的对象,这时就需要实现这些接口。
接口Factory定义了产生ProductA、ProductB的方法,如果需要产生更多的产品,可定义更多的方法。
ConcreteFactory1实现了Factory接口,该类专门生产ConcreteProductA1、ConcreteProductB1产品;同理ConcreteFactory2专门生产ConcreteProductA2、ConcreteProductB2产品。
这些具体工厂和产品都是实现了Factory、ProductA、ProductB接口的,故程序可以不加区别地处理。
请看下一文……
作者:张传波
创新工场创业课堂(敏捷课程)讲师
软件研发管理资深顾问
CMMI首席专家
《火球——UML大战需求分析》作者
《硬啃设计模式》作者
www.umlonline.org创办人
相关文章推荐
- 2.3 《硬啃设计模式》 第5章 “妞”太多,如何管理?(2)- 工厂方法(Factory Method Pattern)
- 2.1 《硬啃设计模式》 第3章 “妞”太多,如何管理?(1)- 简单工厂
- 设计模式【抽象工厂Abstract Factory Pattern】
- 如何让孩子爱上设计模式 —— 6.抽象工厂模式(Abstract Factory Pattern)
- 设计模式 抽象工厂(Abstract Factory Pattern)转载
- VB.net设计模式之工厂方法,抽象工厂方法(Factory Method Pattern,Abstract Factory Method Pattern)
- 抽象工厂设计模式(Abstract Factory Design Pattern)
- 设计模式——抽象工厂(Abstract Factory Pattern)
- 抽象工厂(Abstract Factory Pattern)
- 设计模式 抽象工厂(Abstract Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 设计模式 - Abstract Factory Pattern(抽象工厂模式)
- 05.抽象工厂模式【ABSTRACT FACTORY PATTERN】
- 设计模式笔记6:抽象工程模式(Abstract Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式【Abstract Factory Pattern】
- [C++] Abstract Factory Pattern 实作
- Abstract Factory Pattern(抽象工厂模式)——莫勇鹏老师
- 设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)