创建类型包括 工厂模式、抽象工厂、创建者模式、单例模式和原型模式。
工厂模式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;
}
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图:
代码实现:
总结说明: