简单工厂模式:自己在写业务函数的时候或者类创建对象的时候,不想创建,只想用。
优点:
- 客户端和实现类解耦
- 对于创建复杂的情况,不需要考虑
缺点:
1.简单工厂模式,增加新的功能是通过修改源代码实现,不符合开闭原则
2.这个工厂类的职责过重,如果该类出问题,会影响该很多许多使用该工厂的模块
#include <QCoreApplication>
#include <iostream>
using namespace std;
//抽象水果类
class AbstractFruit{
public:
virtual void ShowName()=0;
};
class Apple:public AbstractFruit{
public:
virtual void ShowName(){
cout<<"apple"<<endl;
}
};
class Banana :public AbstractFruit{
public:
virtual void ShowName(){
cout<<"banana"<<endl;
}
};
//水果工厂,缺点不符合开闭原则,添加水果还要修改工厂类
class FruitFactory{
public:
static AbstractFruit* CreatFruit(string flag){
if(flag == "apple"){
return new Apple;
}
else if(flag == "banana"){
return new Banana;
}
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
FruitFactory* factory = new FruitFactory;
AbstractFruit* fruit = factory->CreatFruit("apple");
fruit->ShowName();
delete fruit;
fruit = factory->CreatFruit("banana");
fruit->ShowName();
delete fruit;
delete factory;
return a.exec();
}