工厂模式 -- 抽象工厂
来源:互联网 发布:淘宝网店能转让吗 编辑:程序博客网 时间:2024/04/28 04:11
有几点需要明确:
1. 客户端按族来创建产品(通过类图,可以看到)而工厂方法(简单工作)所对应的产品,是没有产品族的概念的,
或者说,不是按产品族(产品功能)来创建产品的。
2. 这些产品不能抽象到一个接口或抽象类中
这是,需要使用抽象工厂来完成产品的创建。
在以下情况下应该考虑使用抽象工厂模式:
- 一个系统不应该依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。
- 同属于同一个产品族的产品是在一起时用的,这一约束必须在系统的设计中体现出来。
- 系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。
开-闭原则要求一个软件系统在不修改原有代码的情况下,通过扩展达到增强功能的目的。与iyuyige设计到多个产品等级结构和多个产品族的系统,其功能的增强无外乎是增加新的产品族,和增加新的等级结构。
- 增加新的产品族,只需要在每个产品等级结构中增加新的具体产品角色。然后加入新的具体工厂就可以了。
- 增加新的产品等级结构,需要多出一个与现有的产品等级结构平行的新的产品等级结构。而且需要给每个工厂类添加新的工厂方法,而这是违背"开-闭"原则的。
- 综合起来,抽象工厂模式以一种倾斜的方式支持增加新的产品,它为新产品族的增加提供方便,而不能为新的产品等级结构的增加提供这样的方便。
采用抽象工厂模式设计出的系统类图如下所示:
- 工厂模式 -- 抽象工厂
- 工厂模式-抽象工厂
- 工厂模式-抽象工厂
- 工厂模式/抽象工厂模式
- 工厂模式&&抽象工厂模式
- 工厂模式---抽象工厂模式
- 工厂模式&抽象工厂模式
- 工厂模式,抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 工厂方法,抽象工厂模式
- 2,工厂模式--抽象工厂
- C#工厂模式-抽象工厂
- 工厂模式与抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂、工厂方法、抽象工厂模式
- 记录网站
- 为什么我会愤怒?
- BAT文件学习笔记
- Apache Lucene - Scoring
- 使用MyEclipse快速整合SSH常常遇到的错误
- 工厂模式 -- 抽象工厂
- 轻松删除Windows 7中被占用的文件
- 因特网几个“特殊”IP地址的专门用途
- JavaScript函数小集锦
- SQLserver游标原理和使用方法
- tbody的解释及用法
- MFC程序逆向 – 消息篇(上)+(下)
- Struts常见异常“Cannot find bean XXX in any scope”
- asp数组随机排序