对于抽象工厂设计模式的理解
2018-02-14 14:39
141 查看
阅读了CSDN上的博文,记录自己的理解:
抽象工厂中的两个概念:
产品等级结构
产品族
以海尔和海信两个公司为例,两个公司都生产电视机,那末
另外说明抽象工厂模式对于
一般来说,一个产品等级结构都继承自一个公共的抽象类或实现一个公共接口,增加一个产品族时(看作新成立了一家公司:)),则只需要增加新的产品类和对应的具体工厂类即可;另一种情况是对着技术的发展市面上的洗衣机创新出了新的功能,如半自动洗衣机向全自动洗衣机换代,因此每个公司都将自己的洗衣机升级,此时的洗衣机功能也有所增加,在此模式下,就需要更改顶层的抽象类或接口,在其中添加新的方法,则所有的实现类也要做相应的修改,违背了”开闭原则”。
在以下情况下可以考虑使用抽象工厂模式:
(1)一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有类型的工厂模式都是很重要的,用户无须关心对象的创建过程,将对象的创建和使用解耦。
(2)系统中有多于一个的产品族,而每次只使用其中某一产品族。可以通过配置文件等方式来使得用户可以动态改变产品族,也可以很方便地增加新的产品族。
(3)属于同一个产品族的产品将在一起使用,这一约束必须在系统的设计中体现出来。同一个产品族中的产品可以是没有任何关系的对象,但是它们都具有一些共同的约束,如同一操作系统下的按钮和文本框,按钮与文本框之间没有直接关系,但它们都是属于某一操作系统的,此时具有一个共同的约束条件:操作系统的类型。
(4)产品等级结构稳定,设计完成之后,不会向系统中增加新的产品等级结构或者删除已有的产品等级结构。
抽象工厂中的两个概念:
产品等级结构
产品族
以海尔和海信两个公司为例,两个公司都生产电视机,那末
海尔电视机和
海信电视机就是一个产品等级结构,而
海尔电视机和
海尔电冰箱就是一个产品族。因此可以理解为海尔家的所有产品例如海尔电视机、海尔电冰箱等构成一个产品族,海尔公司看作是一个具体工厂。
另外说明抽象工厂模式对于
增加新的产品族方便,增加新的产品登记结构麻烦,有的也说
横向扩展容易,纵向拓展麻烦,根据上面的示例图也容易理解。
一般来说,一个产品等级结构都继承自一个公共的抽象类或实现一个公共接口,增加一个产品族时(看作新成立了一家公司:)),则只需要增加新的产品类和对应的具体工厂类即可;另一种情况是对着技术的发展市面上的洗衣机创新出了新的功能,如半自动洗衣机向全自动洗衣机换代,因此每个公司都将自己的洗衣机升级,此时的洗衣机功能也有所增加,在此模式下,就需要更改顶层的抽象类或接口,在其中添加新的方法,则所有的实现类也要做相应的修改,违背了”开闭原则”。
在以下情况下可以考虑使用抽象工厂模式:
(1)一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有类型的工厂模式都是很重要的,用户无须关心对象的创建过程,将对象的创建和使用解耦。
(2)系统中有多于一个的产品族,而每次只使用其中某一产品族。可以通过配置文件等方式来使得用户可以动态改变产品族,也可以很方便地增加新的产品族。
(3)属于同一个产品族的产品将在一起使用,这一约束必须在系统的设计中体现出来。同一个产品族中的产品可以是没有任何关系的对象,但是它们都具有一些共同的约束,如同一操作系统下的按钮和文本框,按钮与文本框之间没有直接关系,但它们都是属于某一操作系统的,此时具有一个共同的约束条件:操作系统的类型。
(4)产品等级结构稳定,设计完成之后,不会向系统中增加新的产品等级结构或者删除已有的产品等级结构。
相关文章推荐
- 浅谈对于DAO设计模式的理解
- 重温设计模式(五)——我所理解的"抽象工厂"
- 个人对于PHP设计模式之工厂模式的理解
- 对于设计模式的理解
- 对于各种设计模式的形象理解!
- iOS 对于Target-Action设计模式的理解
- 深入理解PHP:高级技巧、面向对象与核心技术(原书第3版) -- 设计模式之组合模式
- 深入理解JavaScript系列(32):设计模式之观察者模式
- 理解设计模式-关于设计模式
- 设计模式之ABSTRACT FACTORY(抽象工厂)—对象创建型模式
- Java设计模式之-----工厂模式(简单工厂,抽象工厂)
- 设计模式系列 1——StaticFactory(静态工厂),AbstractFactory(抽象工厂)
- 深入理解JavaScript系列(35):设计模式之迭代器模式
- java 设计模式之抽象工厂(2)
- 深入理解JavaScript系列(43):设计模式之状态模式
- 【设计模式】创建型模式之抽象工厂Abstract Factory
- 设计模式--创建型-AbstractFactory(抽象工厂)
- 追MM与设计模式(23种设计模式巧妙解析,趣味理解)
- 三分钟理解“桥接模式”——设计模式轻松掌握
- 谈谈对一些软件架构设计箴言的理解 对软件的过早地优化是万恶的根源 反设计模式案例简介