C++ 01 工厂模式

  1. 说明

    • 工厂模式

      • 给别人用简单。
      • 给自己用方便。
    • 核心

      • 降低使用难度。
    • 好处

      • 重复写非常复杂的创建过程。
      • 容易出错且重复性高。
      • 写程序就是要减少重复性的劳动。一次就好。
  2. 案例

    • 买鞋

      • 外地人鞋贩子那儿买鞋。
      • 本地方言和书面语的对应。
    • 代码

      #include<iostream>
      #include<string>
      
      
      class XieZi {
      public:
       virtual void ShaXie() = 0;
      };
      
      class TuoXie : public XieZi {
      public:
       void ShaXie() override {
         std::cout << "tuo hai!" << std::endl;
       }
      };
      
      class BoHai : public XieZi {
      public:
       void ShaXie() override {
         std::cout << "bo hai!" << std::endl;
       }
      };
      
      class ZaPai : public XieZi {
      public:
       void ShaXie() override {
         std::cout << "bu xiao de!" << std::endl;
       }
      };
      
      class XieFanZi {
      public:
       static XieZi* MaiXie(std::string sha_zi_xie) {
         if ("tuoxie" == sha_zi_xie) {
           return new TuoXie();
         } else if ("yundongxie" == sha_zi_xie) {
           return new BoHai();
         } else {
           return new ZaPai();
         }
       }
      };
      
      
      int main () {
       XieZi * xiezi1 = XieFanZi::MaiXie("tuoxie");
       xiezi1->ShaXie();
       XieZi * xiezi2 = XieFanZi::MaiXie("yundongxie");
       xiezi2->ShaXie();
       XieZi * xiezi3 = XieFanZi::MaiXie("fanbuxie");
       xiezi3->ShaXie();
      }
      
    • 说明

      • 用书面语买到了鞋子,问当地人,则告诉你当地方言是什么。
      • 告诉鞋贩子想买什么鞋,然后就会根据告诉鞋贩子鞋的种类(key),鞋贩子就给你一双鞋。
      • 然后问当地人,就是调用ShaXie.这里需要是虚函数的多态来完成。
    • 背后的故事

      • 虽然这里简化了许多,只需要告诉类型即可,然后鞋贩子就去进货。进货的过程很可能很复杂。
      • 卖鞋的不想要这么复杂,也不需要知道有多复杂。只需要告诉名字即可。
      • 所以就是简化了创建的很多逻辑,不需要知道怎么生产,从哪儿进的货,什么材料制造的,产地在哪儿等复杂的过程。
  3. 总结

    • 简化

      • 简化就方便外面使用。

      • 点餐也是如此,要个火腿炒饭,饭店就是这里的工厂,他会根据你说的什么饭(key)然后跟你炒一份。

    • 好处

      • 集中一个地方负责这种创建的工作。其他地方就不用避免重复写创建代码。
    • 坏处

      • 一个类和多个实体类关联。
    • 场景

      • new一个对象的时候,就要考虑是否需要使用工厂模式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值