设计模式(对象创建)——抽象工厂模式
2017-06-16 14:11
148 查看
抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
场景还原(操作系统的组件):
在系统里a,b,c三个组件必须同时使用,但是a的同类 a1和a2这三种方法有共同特点但是是互斥的,b,b1,b2和c,c1,c2和a/a1/a2是一样的。
就比如说创建在不同操作系统的视窗环境下都能够运行的系统时,Unix下面有unixButton和 unixText,Win下面也有winButton和winText,unixButton和unixText必须在一个系统unix里面用,而winButton和winText只能在Win下面用。
但是winButton和unixButton这两种东西都是有相同的特点的,比如说按下去之后会触发事件,比如说他上面有文字描述等等,但是winButton和unixButton却又是不可以混用的。图片来源
UML类图阐述:
抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道(或关心)实际产出的具体产品是什么。这样一来,客户就从具体的产品中被解耦。
模式结构:
AbstractFactory:抽象工厂
ConcreteFactory:具体工厂
AbstractProduct:抽象产品
Product:具体产品
更多C++示例代码,请移步到本人的github。
设计模式,祝愿你把代码写成艺术。
6/16/2017 2:11:18 PM
场景还原(操作系统的组件):
在系统里a,b,c三个组件必须同时使用,但是a的同类 a1和a2这三种方法有共同特点但是是互斥的,b,b1,b2和c,c1,c2和a/a1/a2是一样的。
就比如说创建在不同操作系统的视窗环境下都能够运行的系统时,Unix下面有unixButton和 unixText,Win下面也有winButton和winText,unixButton和unixText必须在一个系统unix里面用,而winButton和winText只能在Win下面用。
但是winButton和unixButton这两种东西都是有相同的特点的,比如说按下去之后会触发事件,比如说他上面有文字描述等等,但是winButton和unixButton却又是不可以混用的。图片来源
UML类图阐述:
抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道(或关心)实际产出的具体产品是什么。这样一来,客户就从具体的产品中被解耦。
模式结构:
AbstractFactory:抽象工厂
ConcreteFactory:具体工厂
AbstractProduct:抽象产品
Product:具体产品
更多C++示例代码,请移步到本人的github。
设计模式,祝愿你把代码写成艺术。
6/16/2017 2:11:18 PM
相关文章推荐
- javascript 对象创建 之 抽象工厂模式
- 用来创建对象的设计模式之抽象工厂模式
- 1. 抽象工厂模式可以说是简单工厂模式的扩展,它们主要的区别在于需要创建对象的复杂程度上。
- 抽象工厂模式(对象创建)
- Objective-C设计模式——抽象工厂模式Abstract Factory(对象创建)
- 抽象工厂模式:简单工厂模式、工厂方法模式对比;在工厂方法模式中使用反射创建对象实例
- 用C#创建COM对象
- Automation服务器不能创建对象
- ASP.NET在Windows2003下创建excel对象时,系统提示拒绝访问objApp = new Excel.Application() 出错
- VB连接数据库时出现“ActiveX部件不能创建对象”
- 创建智能网络蜘蛛——如何使用Java网络对象和HTML对象(翻译)
- 解决Automation 服务器不能创建对象
- 创建IXMLDOMDocument对象的三种方法
- 使用 JDBC 创建数据库对象
- 动态2:由类名创建对象
- 使用 JDBC 创建数据库对象
- 实现运行时从字符串动态创建对象
- 用Socket和MSHTML对象模型创建自己的浏览器
- 调用构造函数创建对象时应该知道的两点
- 在Flex运行时刻创建UI对象