05.抽象工厂模式【ABSTRACT FACTORY PATTERN】
来源:互联网 发布:伪装苹果在线软件 编辑:程序博客网 时间:2024/06/11 01:28
推荐文章:http://www.jellythink.com/archives/62
类图:
类图解读:
Factory:定义一个工厂
Factory1,Factory2:工厂中的不同的两条生产线。
ProductA,ProductB:需要生产的产品类型定义(接口)
ProductA1,ProductA1;ProductB1,ProductB2:需生产的具体产品。
在一个工厂中,创建多条生产流水线,来生产自定义的产品,只是相对工厂方法模式中,每一条可生产加了一条生产之路可生产出新产品(可扩展性)。
实现代码:
#include <iostream>
usingnamespace std;
// Product A
class ProductA
{
public:
virtualvoidShow()=0;
};
class ProductA1:publicProductA
{
public:
voidShow()
{
cout<<"I'm ProductA1"<<endl;
}
};
class ProductA2:publicProductA
{
public:
voidShow()
{
cout<<"I'm ProductA2"<<endl;
}
};
// Product B
class ProductB
{
public:
virtualvoidShow()=0;
};
class ProductB1:publicProductB
{
public:
voidShow()
{
cout<<"I'm ProductB1"<<endl;
}
};
class ProductB2:publicProductB
{
public:
voidShow()
{
cout<<"I'm ProductB2"<<endl;
}
};
// Factory
class Factory
{
public:
virtualProductA*CreateProductA()=0;
virtualProductB*CreateProductB()=0;
};
class Factory1:publicFactory
{
public:
ProductA*CreateProductA()
{
returnnewProductA1();
}
ProductB*CreateProductB()
{
returnnewProductB1();
}
};
class Factory2:publicFactory
{
ProductA*CreateProductA()
{
returnnewProductA2();
}
ProductB*CreateProductB()
{
returnnewProductB2();
}
};
int main(intargc,char*argv[])
{
Factory* factoryObj1=newFactory1();
ProductA* productObjA1=factoryObj1->CreateProductA();
ProductB* productObjB1=factoryObj1->CreateProductB();
productObjA1->Show();
productObjB1->Show();
Factory* factoryObj2 = newFactory2();
ProductA* productObjA2 = factoryObj2->CreateProductA();
ProductB* productObjB2 = factoryObj2->CreateProductB();
productObjA2->Show();
productObjB2->Show();
if(factoryObj1!=NULL)
{
delete factoryObj1;
factoryObj1=NULL;
}
if(productObjA1!=NULL)
{
delete productObjA1;
productObjA1=NULL;
}
if(productObjB1!=NULL)
{
delete productObjB1;
productObjB1=NULL;
}
if(factoryObj2!=NULL)
{
delete factoryObj2;
factoryObj2=NULL;
}
if(productObjA2!=NULL)
{
delete productObjA2;
productObjA2=NULL;
}
if(productObjB2!=NULL)
{
delete productObjB2;
productObjB2=NULL;
}
}
- 05.抽象工厂模式【ABSTRACT FACTORY PATTERN】
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式 Abstract Factory Pattern
- 抽象工厂模式(abstract factory pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式 The Abstract Factory Pattern
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern )
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)小结
- 抽象工厂模式-Abstract Factory Pattern
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式 Abstract Factory Pattern
- 抽象工厂模式(Abstract Factory Pattern)
- windows7 自动关机命令
- Android应用开发:Fragment与大型数据缓存
- 第八章 8.2.1节练习
- CentOS 安装PHP5.5
- 每日linux命令学习之ps
- 05.抽象工厂模式【ABSTRACT FACTORY PATTERN】
- [JavaScript]-----String类型
- Max Points on a Line
- 杭电1022 Train Problem I(栈)
- android 项目地址
- Python图表软件包ChartDirector的安装和使用
- 15个nosql数据库
- hdu 1496 Equations(数学:暴力|| HASH)
- 这就是生活--1