抽象工厂
来源:互联网 发布:骑士cms二次开发手册 编辑:程序博客网 时间:2024/05/19 06:18
抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
class ProductA{public:virtual void Show()=0;};class ProductA1:public ProductA{public:void Show(){cout<<"ProductA1"<<endl;}};class ProductA2:public ProductA{public:void Show(){cout<<"ProductA2"<<endl;}};class ProductB{public:virtual void Method()=0;};class ProductB1:public ProductB{public:void Method(){cout<<"ProductB1"<<endl;}};class ProductB2:public ProductB{public:void Method(){cout<<"ProductB2"<<endl;}};class Factory{public:virtual ProductA *CreateProductA()=0;virtual ProductB *CreateProductB()=0;};class Factory1:public Factory{public:ProductA *CreateProductA(){return new ProductA1();}ProductB *CreateProductB(){return new ProductB1();}};class Factory2:public Factory{public:ProductA *CreateProductA(){return new ProductA2();}ProductB *CreateProductB(){return new ProductB2();}};void main(){Factory *f= new Factory1();ProductA *pa=f->CreateProductA();ProductB *pb=f->CreateProductB();pa->Show();pb->Method();}1.多个抽象产品类,每个抽象产品可派生出多个具体产品类。抽象产品productA,派生出productA1,productA2,抽象产品productB,派生出productB1,productB2。
2.一个抽象工厂类,可以派生出多个具体工厂类。抽象工厂Factroy,派生出Factory1,Factory2。
3.每个具体工厂类可创建多个具体产品实例。Factory1可创建productA,productB,Factory2可创建productA,productB。
抽象工厂和工厂方法不同:
抽象工厂:用来创建多个产品的等级结构,有多个方法,创建一系列产品,多个抽象产品类,可创建多个产品实例。
工厂方法:用来创建一个产品的等级结构,只有一个方法,创建一种产品,只有一个抽象产品类,只能创建一个产品实例。
0 0
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- PHP MysqlI操作数据库
- Android:clipChildren属性
- java对List的分页操作
- bzoj-1130 POD
- 黑马程序员Android之Loader理解
- 抽象工厂
- iOS 9 HTTP不能正常使用的解决方法
- IDATA stack overflow detected的原因
- 【Linux入门学习之】vi/vim编辑器必知必会
- GCC参数详解
- 我与单片机的日子——(一)
- Linux服务器配置——搭建SVN服务器
- NHibernate从入门到精通系列(5)——持久对象的生命周期(下)
- iOS 调取本地相册/相机,剪裁图片进行头像上传