0
点赞
收藏
分享

微信扫一扫

简单工厂

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.


参考:

  • ​​https://www.guyuehome.com/37300​​



举报

相关推荐

0 条评论