#include <iostream>
#include <list>
using namespace std;
//工厂模式
//优点 不需要记住具体类名,甚至具体参数都不用记
// 实现了对象创建和使用分离
// 系统的可拓展性变好,无需修改接口和原类
//
// 缺点:增加系统中类的个数,复杂度和理解度增加
// 增加了系统的抽象性和理解难度
//
class AbstractFruit {
public:
virtual void showName() = 0;
};
class Apple :public AbstractFruit {
public:
virtual void showName()
{
cout << "苹果" << endl;
}
};
class Banana :public AbstractFruit {
public:
virtual void showName()
{
cout << "香蕉" << endl;
}
};
class Pear :public AbstractFruit {
public:
virtual void showName()
{
cout << "梨" << endl;
}
};
class AbstractFactory {
public:
virtual AbstractFruit* createFruit() = 0;
};
//一种工厂对应一个产品
class AppleFactory :public AbstractFactory {
public:
virtual AbstractFruit* createFruit()
{
return new Apple;
}
};
class PearFactory :public AbstractFactory {
public:
virtual AbstractFruit* createFruit() {
return new Pear;
}
};
class BananaFactory :public AbstractFactory {
public:
virtual AbstractFruit* createFruit() {
return new Banana;
}
};
int main()
{
AbstractFactory* fac = new AppleFactory();
AbstractFruit* apple = fac->createFruit();
apple->showName();
AbstractFactory* fac2 = new PearFactory();
AbstractFruit* pear = fac2->createFruit();
pear->showName();
}
设计模式—工厂模式
最新推荐文章于 2023-07-16 13:58:47 发布