C++设计模式---工厂方法模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Wqh_lrr/article/details/79841081

修正了简单工厂模式中不遵守开放-封闭原则。工厂方法模式把选择判断移到了客户端去实现,如果想添加新功能就不用修改原来的类,直接修改客户端就好。

 //工厂方法模式
 class Product
 {
 public:
 	Product() {}
 	virtual ~Product() {}
 public:
 	virtual void operation() = 0;
 };
 //产品A
 class ProductA :public Product
 {
 public:
 	ProductA() {}
 	virtual ~ProductA() {}
 public:
 	void operation() { cout << "ProductA" << endl; }
 };
 //产品B
 class ProductB :public Product
 {
 public:
 	ProductB() {}
 	virtual ~ProductB() {}
 public:
 	void operation() { cout << "ProductB" << endl; }
 };
 //工厂
 class Factory
 {
 public:
	 virtual Product *CreatProduct() = 0;
 };
 //工厂A
 class FactoryA :public Factory
 {
 public:
	  Product * CreatProduct() { return new ProductA(); }

 };
 // 工厂B
 class FactoryB : public Factory
 {
 public:
	  Product * CreatProduct() { return new ProductB(); }
 };
 int main()
 {
	Factory	* pfa = new FactoryA();
	Product *ppa = pfa->CreatProduct();
	ppa->operation();

	Factory * pfb = new FactoryB();
	Product *ppb = pfb->CreatProduct();
	ppb->operation();
 	return 0;
 }

工厂方法设计模式图:

猜你喜欢

转载自blog.csdn.net/Wqh_lrr/article/details/79841081