C++ Factory & AbstractFactory 模式

1.工厂模式(Factory):

Factory模式是为一类对象提供创建接口或延迟对象的创建到子类中实现

C++ Factory & AbstractFactory 模式_第1张图片

#include 
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...."<CreateProduct();
	return 0;
}


2.抽象工厂模式(Abstract Factory):

AbstractFactory模式是为创建一组(有多类)相关或依赖的对象提供创建接口。

C++ Factory & AbstractFactory 模式_第2张图片


#include 
using namespace std;

//抽象产品类A
class AbstractProductA
{
	public:
		virtual ~AbstractProductA();
	protected:
		AbstractProductA();
	private:
};
//抽象产品类B
class AbstractProductB
{
	public:
		virtual ~AbstractProductB();
	protected:
		AbstractProductB();
	private:
};
//子类A1
class ProductA1:public AbstractProductA
{
	public:
		ProductA1();
		~ProductA1();
	protected:
	private:
};
//子类A2
class ProductA2:public AbstractProductA
{
	public:
		ProductA2();
		~ProductA2();
	protected:
	private:
};
//子类B1
class ProductB1:public AbstractProductB
{
	public:
		ProductB1();
		~ProductB1();
	protected:
	private:
};
//子类B2
class ProductB2:public AbstractProductB
{
	public:
		ProductB2();
		~ProductB2();
protected:
private:
};

AbstractProductA::AbstractProductA(){}
AbstractProductA::~AbstractProductA(){}
AbstractProductB::AbstractProductB(){}
AbstractProductB::~AbstractProductB(){}
ProductA1::ProductA1(){cout<<"ProductA1..."<CreateProductA();
	cf1->CreateProductB();
	cout<CreateProductA();
	cf2->CreateProductB();
	return 0;
}



你可能感兴趣的:(设计模式)