C++设计模式之一:Abstract Factory(抽象工厂)
来源:互联网 发布:全球直播软件 编辑:程序博客网 时间:2024/06/06 20:02
一:意图
提供一个创建一系列相关或者相互依赖对象的接口,而无需指定具体的类;
二:类图
三、组成元素:
AbstractFactory:声明一个抽象产品对象的操作接口;
ConcreteFactroy:实现创建对象的具体操作;
AbstractProduct:一类产品的抽象接口;
Product:被相应工厂创建的具体产品;
四、实现:
#include "iostream"using namespace std;class AbstractProductA{};class ProductA1:public AbstractProductA{};class ProductA2:public AbstractProductA{};class AbstractProductB{};class ProductB1:public AbstractProductB{};class ProductB2:public AbstractProductB{};class AbstractFactory{public:virtual AbstractProductA* CreateProductA()=0;virtual AbstractProductB* CreateProductB()=0;};class ConcreteFactroy1:public AbstractFactory{public:AbstractProductA* CreateProductA(){cout<<"ProductA1 created!"<<endl;return new ProductA1;}AbstractProductB* CreateProductB(){cout<<"ProductB1 created!"<<endl;return new ProductB1;}};class ConcreteFactroy2:public AbstractFactory{public:AbstractProductA* CreateProductA(){cout<<"ProductA2 created!"<<endl;return new ProductA2;}AbstractProductB* CreateProductB(){cout<<"ProductB2 created!"<<endl;return new ProductB2;}};void main(){AbstractFactory* abs1=new ConcreteFactroy1();AbstractFactory* abs2=new ConcreteFactroy2();AbstractProductA* productA1=abs1->CreateProductA();AbstractProductB* productB1=abs1->CreateProductB();AbstractProductA* productA2=abs2->CreateProductA();AbstractProductB* productB2=abs2->CreateProductB();}
- 设计模式之一:Abstract Factory 抽象工厂
- C++设计模式之一:Abstract Factory(抽象工厂)
- 抽象工厂(Abstract Factory)设计模式
- 设计模式-抽象工厂(Abstract Factory)
- 抽象工厂(Abstract Factory)设计模式
- 设计模式-抽象工厂(Abstract Factory)
- 设计模式 一 抽象工厂Abstract Factory(工厂模式)
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 创建模式之一:抽象工厂(Abstract Factory)
- 创建模式之一:抽象工厂(Abstract Factory)续2
- 设计模式-抽象工厂模式(Abstract Factory)
- 设计模式:抽象工厂模式(Abstract Factory)
- 设计模式(3)抽象工厂模式(Abstract Factory)
- .Net设计模式之抽象工厂模式(Abstract Factory)
- .NET设计模式:抽象工厂模式(Abstract Factory)
- .NET设计模式-抽象工厂模式(Abstract Factory)
- .NET设计模式:抽象工厂模式(Abstract Factory)
- 设计模式3:Abstract Factory Pattern(抽象工厂模式)
- gethostbyname() -- 用域名或主机名获取IP地址
- Struts 1 and 2
- 在 Microsoft Outlook 中无法打开附件(禁止访问不安全附件)
- Ajax详解
- ai物体旋转复制如何自定义中心点
- C++设计模式之一:Abstract Factory(抽象工厂)
- 黑马程序员-反射
- 深入学习android之AlarmManager
- 电信运营商云计算发展战略分析
- 手把手教你把Vim改装成一个IDE编程环境(图文)
- 黑马程序员-javaBean
- MongoDB 的安装
- Offset,Client,Scroll,Height,Top 一些距离参数的图示和解释
- Flex4中TitleWindow隐藏关闭按钮方法