工厂模式的例子-转载

下面以女娲造黑人,白人,黄种人的例子来介绍一下工厂模式。

1.工厂的接口,相当于造人工厂总部。

class IHumanFactory
{
public:
    IHumanFactory(void)
    {
    
    }
    ~IHumanFactory(void)
    {
    
    }
    virtual IHuman* CreateHuman() = 0;

};

2.造人各个的部门

class WhiteHumanFactory: public IHumanFactory
{
public:
    WhiteHumanFactory(void)
    {

    }
    ~WhiteHumanFactory(void)
    {
    
    }
    IHuman *CreateHuman()
    {
        return new WhiteHuman();
    }

};

class YellowHumanFactory: public IHumanFactory
{
public:
    YellowHumanFactory(void)
    {

    }
    ~YellowHumanFactory(void)
    {
    
    }
    IHuman *CreateHuman()
    {
        return new YellowHuman();
    }

};

class BlackHumanFactory: public IHumanFactory
{
public:
    BlackHumanFactory(void)
    {

    }
    ~BlackHumanFactory(void)
    {
    
    }
    IHuman *CreateHuman()
    {
        return new BlackHuman();
    }

};

3.各种人的特征。

class IHuman
{
public:
    IHuman(void)
    {

    }
    ~IHuman()
    {
    
    }
    virtual void Laugh() = 0;
    virtual void Cry() = 0;
    virtual void Talk() = 0;

};

class WhiteHuman : public IHuman
{
public:
    WhiteHuman(void)
    {
    
    }
    ~WhiteHuman(void)
    {
    
    }
    void Laugh()
    {
        std::cout << "白种人笑!" << std::endl;
    }
    void Cry()
    {
        std::cout << "白种人哭!" <<std::endl;
    }
    void Talk()
    {
        std::cout << "白种人说话!" <<std::endl;
    }
};

class YellowHuman : public IHuman
{
public:
    YellowHuman(void)
    {
    
    }
    ~YellowHuman(void)
    {
    
    }
    void Laugh()
    {
        std::cout << "黄种人笑!" << std::endl;
    }
    void Cry()
    {
        std::cout << "黄种人哭!" <<std::endl;
    }
    void Talk()
    {
        std::cout << "黄种人说话!" <<std::endl;
    }
};

class BlackHuman : public IHuman
{
public:
    BlackHuman(void)
    {
    
    }
    ~BlackHuman(void)
    {
    
    }
    void Laugh()
    {
        std::cout << "黑种人笑!" << std::endl;
    }
    void Cry()
    {
        std::cout << "黑种人哭!" <<std::endl;
    }
    void Talk()
    {
        std::cout << "黑种人说话!" <<std::endl;
    }
};

4.主函数

int main()
{
    std::cout << "#1.制造黄种人"<<std::endl;
    IHumanFactory *pHumanFactory = new YellowHumanFactory();
    IHuman * pHuman = pHumanFactory->CreateHuman();
    pHuman->Cry();
    pHuman->Laugh();
    pHuman->Talk();
    delete pHuman;
    delete pHumanFactory;

    std::cout << "#1.制造白种人"<<std::endl;
    IHumanFactory *pHumanFactory2 = new WhiteHumanFactory();
    IHuman * pHuman2 = pHumanFactory->CreateHuman();
    pHuman->Cry();
    pHuman->Laugh();
    pHuman->Talk();
    delete pHuman2;
    delete pHumanFactory2;

    std::cout << "#1.制造黑种人"<<std::endl;
    IHumanFactory *pHumanFactory3 = new BlackHumanFactory();
    IHuman * pHuman3 = pHumanFactory->CreateHuman();
    pHuman->Cry();
    pHuman->Laugh();
    pHuman->Talk();
    delete pHuman3;
    delete pHumanFactory3;

    getchar();
    return 0;

    
}

输出结果:

 

#1.制造黄种人
黄种人哭!
黄种人笑!
黄种人说话!
#1.制造白种人
白种人哭!
白种人笑!
白种人说话!
#1.制造黑种人
黑种人哭!
黑种人笑!
黑种人说话

 

来自:https://www.cnblogs.com/onlycxue/p/3428075.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值