简单工厂

C++

#include <iostream>
#include <map>

/***********************/

// 基类 鞋子
class Shoes
{
public:
    virtual void Show() = 0;
    virtual ~Shoes() {}
};

// 耐克鞋子
class NiKeShoes : public Shoes
{
public:
    void Show()
    {
        std::cout << "我是耐克球鞋,我的广告语:Just do it" << std::endl;
    }
};

class AdidasShoes : public Shoes
{
public:
    void Show()
    {
        std::cout << "我是阿迪鞋,我的广告语:Impossible is nothing." << std::endl;
    }
};

enum class SHOES_TYPE
{
    NIKE,
    ADIDAS
};

// 总鞋厂
class ShoesFactory
{
public:
    // 根据鞋子类型创建对应的鞋子对象
    Shoes* CreateShoes(SHOES_TYPE type)
    {
        switch (type)
        {
        case SHOES_TYPE::NIKE:
            return new NiKeShoes();
            break;
        case SHOES_TYPE::ADIDAS:
            return new AdidasShoes();
            break;
        default:
            return NULL;
            break;
        }
    }
};


/***************************************************************/


int main()
{
    ShoesFactory shoesFactory;

    // 从鞋工厂对象创建耐克鞋对象
    Shoes* pNikeShoes = shoesFactory.CreateShoes(SHOES_TYPE::NIKE);
    if (pNikeShoes != NULL)
    {
        // 耐克球鞋广告喊起
        pNikeShoes->Show();

        // 释放资源
        delete pNikeShoes;
        pNikeShoes = NULL;
    }

    // 从鞋工厂对象创建阿迪达斯鞋对象
    Shoes* pAdidasShoes = shoesFactory.CreateShoes(SHOES_TYPE::ADIDAS);
    if (pAdidasShoes != NULL)
    {
        // 阿里达斯球鞋广告喊起
        pAdidasShoes->Show();

        // 释放资源
        delete pAdidasShoes;
        pAdidasShoes = NULL;
    }

    return 0;
}

输出:

我是耐克球鞋,我的广告语:Just do it
我是阿迪鞋,我的广告语:Impossible is nothing.




参考:

posted @   double64  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2020-10-16 关于指针和数组的移动
点击右上角即可分享
微信分享提示