C++设计模式程序员

【C++设计模式】工厂方法模式

2021-01-31  本文已影响0人  小鱼号的代码日记
/*设计模式
 * 工厂方法模式
 * 解决了简单工厂不符合开闭原则的缺点
 * 缺点:
 *  1 类的个数越来越多,增加维护成本
 * 使用场景:
 *    客户端不知道它所需要的对象的类
 *    抽象工厂通过其子类来创建哪个对象
 */

#include<iostream>
using namespace std;
#include "simplefactory.cpp"
//抽象水果工厂
class AbstractFruitFactory
{
    public:
        virtual AbstractFruit* CreateFruit() = 0;
};

//具体的苹果工厂
class AppleFruitFactory :public AbstractFruitFactory
{
    public:
        virtual AbstractFruit* CreateFruit()
        {
           return new Apple();
        }
};

//具体的香蕉工厂
class BananaFruitFactory :public AbstractFruitFactory
{
    public:
        virtual AbstractFruit* CreateFruit()
        {
           return new Banana();
        }
};

void testFactoryFunction()
{
    cout << "factory function test" << endl;
    AbstractFruitFactory* absFactory = nullptr;
    absFactory = new AppleFruitFactory();
    AbstractFruit* fruit = absFactory->CreateFruit();
    fruit->ShowName();
    delete absFactory;

    absFactory = new BananaFruitFactory();
    fruit = absFactory->CreateFruit();
    fruit->ShowName();
    delete fruit;
}
上一篇 下一篇

猜你喜欢

热点阅读