设计模式-简单工厂模式

创建型-简单工厂模式

//简单工厂模式
//1.增加新的功能是通过修改源代码实现,不符合开闭原则
//2.这个类职责过重,这个类发生问题,会影响很多使用这个工厂的模块

#include <iostream>
using namespace std;

//抽象水果类
class Fruit{
public:
    virtual void ShowName() = 0;
};

//苹果
class Apple : public::Fruit{
public:
    virtual void ShowName(){
        cout << "我是苹果!" << endl;
    }
};

//香蕉
class Banana : public::Fruit{
public:
    virtual void ShowName(){
        cout << "我是香蕉!" << endl;
    }
};

//鸭梨
class Pear : public::Fruit{
public:
    virtual void ShowName(){
        cout << "我是鸭梨!" << endl;
    }
};

//水果工厂
class FruitFactory{
public:
    static Fruit* CreateFruit(string flag){
        if(flag == "apple"){
            return new Apple;
        }
        else if(flag == "banana"){
            return new Banana;
        }
        else if(flag == "pear"){
            return new Pear;
        }
        else{
            return NULL;
        }
        
    }
};

void test(){
    FruitFactory* factory = new FruitFactory;
    Fruit* fruit = factory->CreateFruit("apple");
    fruit->ShowName();
    delete fruit;
    
    fruit = factory->CreateFruit("banana");
    fruit->ShowName();
    delete fruit;

    fruit = factory->CreateFruit("pear");
    fruit->ShowName();
    delete fruit;

    delete factory;
}

int main()
{
    test();


    system("pause");
    return 0;
}

posted @ 2023-10-14 19:04  洋綮  阅读(14)  评论(0)    收藏  举报