C++设计模式---简单工厂模式

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

简单工厂模式

主要用于创建对象,新添加类时,不会影响以前的系统代码。核心思想是用一个工厂来根据输入的条件产生不同的类,根据不同类的virtual函数得到不同的结果。适用于不同情况创建不同的类时,客户端必须知道基类和工厂类,耦合性不好。

#include <iostream>
using namespace std;
 enum CTYPE { PA=1, PB };

 //基类
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:
	static Product * CreatProduct(CTYPE ctype)
	{
		if (ctype == PA) //工厂内部判断    
			return new ProductA(); //生产产品A    
		else if (ctype == PB)
			return new ProductB(); //生产产品B    
		else
			return NULL;
	}
};

int main()
{
	
	Product * pf = Factory::CreatProduct(PA);//要这样写,就需要在声明处+ static
	pf->operation();

	Product * pf = Factory::CreatProduct(PB);
	pf->operation();
	return 0;
}

这样设计的缺点,就是要增加新的核类型时,就需要修改工厂类。这就违反了开放封闭原则:软件实体(类、模块、函数)可以扩展,但是不可修改。

简单工厂模式图:


猜你喜欢

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