设计模式之创建类型

来源:互联网 发布:java helloword 编辑:程序博客网 时间:2024/06/05 02:29

创建类型包括 工厂模式、抽象工厂、创建者模式、单例模式和原型模式。

工厂模式UML图:

代码实现:

Factory.h

class ProductBase;class FactoryBase{public:FactoryBase();~FactoryBase();virtual ProductBase * ConcreateProduct() = 0;};class FactoryA : public FactoryBase{public:FactoryA();~FactoryA();virtual ProductBase * ConcreateProduct() override;};class FactoryB : public FactoryBase{public:FactoryB();~FactoryB();virtual ProductBase * ConcreateProduct() override;};



Factory.cpp

FactoryBase::FactoryBase(){}FactoryBase::~FactoryBase(){}FactoryA::FactoryA(){}FactoryA::~FactoryA(){}ProductBase * FactoryA::ConcreateProduct(){ProductBase * Product = new ProductA();return Product;}FactoryB::FactoryB(){}FactoryB::~FactoryB(){}ProductBase * FactoryB::ConcreateProduct(){ProductBase * Product = new ProductB();return Product;}


Product.h

class ProductBase{public:ProductBase();~ProductBase();public:virtual void Execute() = 0;};class ProductA : public ProductBase{public:ProductA();~ProductA();public:virtual void Execute() override;};class ProductB : public ProductBase{public:ProductB();~ProductB();public:virtual void Execute() override;};

Product.cpp

ProductBase::ProductBase(){cout << "Product Base Construct" << endl;}ProductBase::~ProductBase(){}ProductA::ProductA(){cout << "Product A Construct" << endl;}ProductA::~ProductA(){}void ProductA::Execute(){cout << "Product A Execute" << endl;}ProductB::ProductB(){cout << "Product B Construct" << endl;}ProductB::~ProductB(){}void ProductB::Execute(){cout << "Product B Execute" << endl;}

对应的客户:

int main(){FactoryBase * FactoryAInstance = new FactoryA();ProductBase * ProductAInstance = FactoryAInstance->ConcreateProduct();ProductAInstance->Execute();delete ProductAInstance;delete FactoryAInstance;FactoryBase * FactoryBInstance = new FactoryB();ProductBase * ProductBInstance = FactoryBInstance->ConcreateProduct();ProductBInstance->Execute();delete ProductBInstance;delete FactoryBInstance;system("pause");    return 0;}

抽象工厂UML图:

代码实现:


创建者模式UML图:

代码实现:


创建者模式UML图:

代码实现:


单例模式UML图:

代码实现:


原型模式UML图:

代码实现:


总结说明:

0 0
原创粉丝点击