2.抽象工厂模式
2015-08-19 01:18
239 查看
一、基本模式
1. 抽象工厂,具体工厂,抽象产品,具体产品作为其要素;
2. 具体工厂生产出具有【抽象产品】协议方法的产品
3. 生产出的具体产品细节对使用者透明,使用者只需知道抽象产品的协议即可。
4. 使用时: AbstractProduct aProduct = concreteFactory.createProduct; aProduct.doSth();
二、模式演化
1. 抽象xx不一定要用抽象类,用接口或Protocol也可
2. 产品创建方法可有多个, 如 createEatableProduct + createPlayabelProduct + createSoulmateProduct 对应不同的抽象产品
3. 有则复用, 无则生产, 与享元模式形成组合模式
三、 模式退化
抽象产品的多态性作为必要的适用条件,当只有一类具体产品时,失去多态在存在意义
1. 抽象工厂,具体工厂,抽象产品,具体产品作为其要素;
2. 具体工厂生产出具有【抽象产品】协议方法的产品
3. 生产出的具体产品细节对使用者透明,使用者只需知道抽象产品的协议即可。
4. 使用时: AbstractProduct aProduct = concreteFactory.createProduct; aProduct.doSth();
二、模式演化
1. 抽象xx不一定要用抽象类,用接口或Protocol也可
2. 产品创建方法可有多个, 如 createEatableProduct + createPlayabelProduct + createSoulmateProduct 对应不同的抽象产品
3. 有则复用, 无则生产, 与享元模式形成组合模式
三、 模式退化
抽象产品的多态性作为必要的适用条件,当只有一类具体产品时,失去多态在存在意义
相关文章推荐
- 设置grub密码
- Android自定义notification实现进度条功能
- HDOJ 题目3518 Boring counting(后缀数组,求不重叠重复次数最少为2的子串种类数)
- Jlink SWD和Jtag下载失败总结
- Android WIFI 开发
- SQLSTATE[HY000] [2003] Can't connect to MySQL server on '*.*.*.*' (13)
- !SPOJ 1043 多次查询区间最大连续和-线段树
- Myeclipse 编译等级
- 黑马程序员——黑苹果的日记(6)——Foundation之NSString
- Linux下常用的C/C++开源Socket库
- 1091. Acute Stroke (30) BFS or DFS
- Android Eclipse工程开发中的常见调试问题(二)android.os.NetworkOnMainThreadException 异常的解决办法
- Map
- Android notification
- nc恢复管理员密码
- [hdu5402 Travelling Salesman Problem]YY
- Comparator Comparable
- POJ2624--4th Point
- Meter Bus解析2:slave设计
- offsetof 和 container_of