zoukankan      html  css  js  c++  java
  • C++_简单工厂模式_代码案例

    #include <iostream>
    using namespace std;
    
    // 水果抽象类
    class CAbstractFruit
    {
    public:
        virtual void ShowName() = 0;
    };
    
    // 苹果类
    class CApple : public CAbstractFruit
    {
    public:
        virtual void ShowName()
        {
            cout << " 我是苹果!" << endl;
        }
    };
    
    // 香蕉类
    class CBanana : public CAbstractFruit
    {
    public:
        virtual void ShowName()
        {
            cout << " 我是香蕉!" << endl;
        }
    };
    
    // 鸭梨类
    class CPear : public CAbstractFruit
    {
    public:
        virtual void ShowName()
        {
            cout << " 我是鸭梨!" << endl;
        }
    };
    
    // 水果工厂类
    class CFruitFactory
    {
    public:
        static CAbstractFruit* CreateFruit(string flag)
        {
            if (flag == "apple")
            {
                return new CApple;
            }
            else if (flag == "banana")
            {
                return new CBanana;
            }
            else if (flag == "pear")
            {
                return new CPear;
            }
            else
            {
                return nullptr;
            }
        }
    };
    
    int main()
    {
        CAbstractFruit* fruit = CFruitFactory::CreateFruit("apple");
        if (fruit != nullptr)
        {
            fruit->ShowName();
        }
        delete fruit;
    
        fruit = CFruitFactory::CreateFruit("banana");
        if (fruit != nullptr)
        {
            fruit->ShowName();
        }
        delete fruit;
    
        fruit = CFruitFactory::CreateFruit("pear");
        if (fruit != nullptr)
        {
            fruit->ShowName();
        }
        delete fruit;
        cin.get();
        return 0;
    }
  • 相关阅读:
    [BZOJ1385][Baltic2000]Division expression
    [BZOJ1412/Luogu2598][ZJOI2009]狼和羊的故事
    iPhone SlideShow
    替换一个文件中的内容BAT
    用指定字符串替换指定内容
    修改注册表
    如何在单独的窗口中打开 Excel 文件
    IBatis和Hibernate区别
    c# 常用的面试题
    在线编译器
  • 原文地址:https://www.cnblogs.com/duxie/p/15046340.html
Copyright © 2011-2022 走看看