C++ Factory & AbstractFactory 模式
来源:互联网 发布:淘宝零食店铺名字大全 编辑:程序博客网 时间:2024/05/31 11:04
1.工厂模式(Factory):
Factory模式是为一类对象提供创建接口或延迟对象的创建到子类中实现
#include <iostream>using namespace std;//抽象类class Product { public: virtual ~Product() =0;protected: Product();private:};class ConcreteProduct: public Product { public: ~ConcreteProduct();ConcreteProduct();protected:private:};Product::Product() {}Product::~Product() {}ConcreteProduct::ConcreteProduct(){cout<<"ConcreteProduct...."<<endl;}ConcreteProduct::~ConcreteProduct(){}//抽象类class Factory{public:virtual ~Factory() = 0;virtual Product* CreateProduct() = 0;protected:Factory();private:};class ConcreteFactory:public Factory {public:~ConcreteFactory();ConcreteFactory();Product* CreateProduct();protected:private:};Factory::Factory(){}Factory::~Factory(){}ConcreteFactory::ConcreteFactory(){cout<<"ConcreteFactory....."<<endl;}ConcreteFactory::~ConcreteFactory() {}Product* ConcreteFactory::CreateProduct(){return new ConcreteProduct();}int main(){Factory* fac = new ConcreteFactory();Product* p = fac->CreateProduct();return 0;}
2.抽象工厂模式(Abstract Factory):
AbstractFactory模式是为创建一组(有多类)相关或依赖的对象提供创建接口。
#include <iostream>using namespace std;//抽象产品类Aclass AbstractProductA{public:virtual ~AbstractProductA();protected:AbstractProductA();private:};//抽象产品类Bclass AbstractProductB{public:virtual ~AbstractProductB();protected:AbstractProductB();private:};//子类A1class ProductA1:public AbstractProductA{public:ProductA1();~ProductA1();protected:private:};//子类A2class ProductA2:public AbstractProductA{public:ProductA2();~ProductA2();protected:private:};//子类B1class ProductB1:public AbstractProductB{public:ProductB1();~ProductB1();protected:private:};//子类B2class ProductB2:public AbstractProductB{public:ProductB2();~ProductB2();protected:private:};AbstractProductA::AbstractProductA(){}AbstractProductA::~AbstractProductA(){}AbstractProductB::AbstractProductB(){}AbstractProductB::~AbstractProductB(){}ProductA1::ProductA1(){cout<<"ProductA1..."<<endl;}ProductA1::~ProductA1(){}ProductA2::ProductA2(){cout<<"ProductA2..."<<endl;}ProductA2::~ProductA2(){}ProductB1::ProductB1(){cout<<"ProductB1..."<<endl;}ProductB1::~ProductB1() {}ProductB2::ProductB2(){cout<<"ProductB2..."<<endl;}ProductB2::~ProductB2() {}//抽象工厂类class AbstractFactory{public:virtual ~AbstractFactory();virtual AbstractProductA* CreateProductA() = 0;virtual AbstractProductB* CreateProductB() = 0;protected: AbstractFactory();private:};//工厂子类ConcreteFactory1,用于生产产品A1,B1class ConcreteFactory1:public AbstractFactory{public:ConcreteFactory1();~ConcreteFactory1();AbstractProductA* CreateProductA();AbstractProductB* CreateProductB();protected:private:};//工厂子类ConcreteFactory2,用于生产产品A2,B2class ConcreteFactory2:public AbstractFactory{public:ConcreteFactory2();~ConcreteFactory2();AbstractProductA* CreateProductA();AbstractProductB* CreateProductB();protected:private:};AbstractFactory::AbstractFactory(){}AbstractFactory::~AbstractFactory(){}ConcreteFactory1::ConcreteFactory1(){}ConcreteFactory1::~ConcreteFactory1(){}AbstractProductA* ConcreteFactory1::CreateProductA(){return new ProductA1();}AbstractProductB* ConcreteFactory1::CreateProductB(){return new ProductB1();}ConcreteFactory2::ConcreteFactory2(){}ConcreteFactory2::~ConcreteFactory2(){}AbstractProductA* ConcreteFactory2::CreateProductA(){return new ProductA2();}AbstractProductB* ConcreteFactory2::CreateProductB(){return new ProductB2();}int main(){AbstractFactory* cf1 = new ConcreteFactory1();cf1->CreateProductA();cf1->CreateProductB();cout<<endl;AbstractFactory* cf2 = new ConcreteFactory2();cf2->CreateProductA();cf2->CreateProductB();return 0;}
- C++ Factory & AbstractFactory 模式
- Factory模式和AbstractFactory模式
- 创建型模式Factory和AbstractFactory
- Factory && AbstractFactory
- 工厂模式(Factory)和抽象工厂模式(AbstractFactory)
- AbstractFactory模式
- AbstractFactory模式
- AbstractFactory模式
- AbstractFactory模式
- AbstractFactory模式
- AbstractFactory模式
- AbstractFactory 模式
- 简单工厂模式(Simple Factory)和工厂方法模式(Factory Method)和AbstractFactory ( 抽象工厂 )
- 设计模式的实现(C++)------抽象工厂模式(AbstractFactory)
- 几种创建型的设计模式概析【上】——Factory模式, AbstractFactory模式,Singleton模式【C++实现】
- 设计模式之 abstractfactory
- python实现AbstractFactory模式
- AbstractFactory抽象工厂模式
- 含标识列数据窗口更新,Row changed between retrieve and update.问题
- ORA-28002: 7 天之后口令将过期的解决方法 .
- Java协程框架----Kilim实现机制解析
- ecllipse常用快捷键
- ant的学习和使用
- C++ Factory & AbstractFactory 模式
- 数塔
- 【转】javascript中的this
- Cookie/Session入门
- 【JConsole 连接配置】
- android 小知识点
- MFC控件显示图像的步骤
- android平台下的cocos2d-x环境配置经历
- 枚举类型