C++设计模式程序员

【C++设计模式】简单工厂模式

2021-01-31  本文已影响0人  小鱼号的代码日记
/*设计模式
 * 简单工厂模式
 * 不想创建对象(避开new)
 * 传入参数,让工厂知道应该创建类型的对象
 *优点:
 * 1 客户端和具体类解耦
 * 2 不用考虑如何创建复杂的对象
 * 缺点:
 * 1简单工厂模式,创建新的对象需要修改源代码
 *  不符合开闭原则
 * 2 创建各种对象,职责过重,不符合单一职责原则
 * 场景:
 *  适合负责创建对象比较少
 *
*/
#include<iostream>
using namespace std;
//抽象水果
class AbstractFruit
{
  public:
    virtual void ShowName() = 0;
};
//苹果
class Apple :public AbstractFruit
{
public:
    virtual void ShowName()
    {
        cout << "i am apple" << endl;
    }
};

//香蕉
class Banana :public AbstractFruit
{
public:
    virtual void ShowName()
    {
        cout << "i am banana" << endl;;
    }
};

//水果工厂
class FruitFactory
{
    public:
    static AbstractFruit* CreateFruit(string strFruitName)
    {
        if(strFruitName == "apple")
        {
            return new Apple;
        }
        else if(strFruitName == "banana")
        {
            return new Banana;
        }
        else
        {
            return nullptr;
        }
    }
};

void testSimpleFactory()
{
    cout << "simple factory test" << endl;
    FruitFactory* factory = new FruitFactory;
    AbstractFruit* fruit = factory->CreateFruit("apple");
    fruit->ShowName();
    delete fruit;
    fruit = factory->CreateFruit("banana");
    fruit->ShowName();
    delete fruit;
    delete factory;
}


上一篇 下一篇

猜你喜欢

热点阅读