简单工厂是一种创建型模式
优点:
简单工厂模式能够提高生产效率和生产力。
缺点:
- 简单工厂模式将所有产品的创建逻辑集中在一个工厂类中,一旦这个工厂类出现问题,整个系统都会受到影响。
- 如果要添加新的产品类,需要修改工厂类的代码,违反了开闭原则(对扩展开放,对修改关闭)。
常用实例:
简单工厂模式常用于客户端不需要或不应该知道如何创建具体类型对象的情况。例如,自动售货机销售糖果(或其他产品),咖啡机制作各种类型的咖啡:浓咖啡、卡布奇诺、拿铁等。在这些情况下,简单工厂模式可以帮助客户端轻松创建所需的产品对象,而无需关心对象的创建细节。
类图:
代码:
#include<iostream>
#include"string"
using namespace std;
enum MyEnum
{
add=1,
Mul
};
//产品基类
class product
{
public:
int a,b;
virtual int operation(int a,int b)=0;
};
class product_Add :public product
{
public:
int operation(int a, int b)
{
cout<<a+b<<endl;
return 0;
}
};
class product_Mul :public product
{
public:
int operation(int a, int b)
{
cout << a*b << endl;
return 0;
}
};
//工厂抽象类
class Factory
{
public:
product* create(int index)
{
switch (index)
{
case add:
return new product_Add();
break;
case Mul:
return new product_Mul();
break;
default:
break;
}
}
};
int main()
{
product* pro=new product_Add;
pro->operation(2,3);
//简单工厂调用
Factory *fac=new Factory;
product* _product= fac->create(Mul);
_product->operation(2,3);
return 0;
}