工厂方法模式:在简单工厂的基础上,抽象出工厂类。每创建一个类,创建对应的工厂
优点:
- 用户添加新的产品的时候,只需要添加具体的产品类和对应的具体工厂类
,无需对原工厂进行修改,符合开闭原则
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 AbstractFactory{
public:
virtual AbstractFruit* CreatFruit()=0;
};
class BananaFactory:public AbstractFactory{
public:
virtual AbstractFruit* CreatFruit(){
return new B