简单工厂
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.
参考:
分类:
软件技术
标签:
DesignPattern
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2020-10-16 关于指针和数组的移动