<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      5分鐘學設計模式:工廠方法,讓你的代碼像搭積木一樣簡單!

      大家好,我是知微。

      上一次的美食街之旅中,我們探討了簡單工廠模式。今天,讓我們繼續在美食街的夜色中,探索工廠方法模式的奧秘。

      第一幕:美食街的繁華

      美食街上,小吃攤的生意越來越火,攤主們為了滿足顧客的多樣化需求,開始提供更多種類的小吃。

      顧客(你):老板,聽說你們這除了煎餅果子,還有其他好吃的?

      老板:對啊,我們最近推出了烤冷面和章魚小丸子,都非常受歡迎!

      顧客(你):聽起來不錯,那各來一份吧!

      老板:好嘞,馬上給您做!

      用代碼表示

      class Snack {
      public:
          virtual void serve() = 0;
          virtual ~Snack() {}
      };
      
      class RoastedColdNoodles : public Snack {
      public:
          void serve() override {
              std::cout << "你的烤冷面好了!" << std::endl;
          }
      };
      
      class OctopusBall : public Snack {
      public:
          void serve() override {
              std::cout << "你的章魚小丸子好了!" << std::endl;
          }
      };
      
      // 簡單工廠
      class SnackFactory {
      public:
          static Snack* createSnack(const std::string& type) {
              if (type == "COLD_NOODLES") {
                  return new RoastedColdNoodles();
              } else if (type == "OCTOPUS_BALL") {
                  return new OctopusBall();
              }
              // ...其他小吃類型的創建
              return nullptr;
          }
      };
      

      第二幕:小吃攤的擴張

      隨著生意越來越好,老板一個人弄這么多種類的小吃(簡單工廠模式,一個工廠做很多種類),很多時候都忙不過來,出餐速度慢了許多。

      思考了幾天之后,老板果斷做了決定,讓家人幫忙,多弄幾個攤位,每個攤位都負責自己的小吃(工廠方法模式每個工廠只做對應的產品),顧客可以直接去找他們喜歡的攤位。

      顧客(你):老板,我想吃手抓餅,但這家攤位只賣煎餅果子。

      老板:沒問題,我讓我家手抓餅攤位的老板給你做。

      顧客(你):這樣啊,那我就放心了。

      用代碼表示

      // 抽象產品
      class Snack {
      public:
          virtual void serve() = 0;
          virtual ~Snack() {}
      };
      
      // 具體產品
      class HandPies : public Snack {
      public:
          void serve() override {
              std::cout << "你的手抓餅好了!" << std::endl;
          }
      };
      
      // 簡單工廠
      class SnackFactory {
      public:
          static Snack* createSnack(const std::string& type) {
              if (type == "HANDPIES") {
                  return new HandPies();
              }
              // ...其他小吃類型的創建
              return nullptr;
          }
      };
      

      第三幕:小吃攤的專業化

      老板的決定很快帶來了變化,每個攤位都開始專注于自己的特色小吃,顧客可以直接向特定的攤位訂購。

      顧客(你):我聽說這家的章魚小丸子特別好吃,我就直接來這家攤位了。

      章魚小丸子老板:歡迎光臨!我們的章魚小丸子是這條街上最好吃的,馬上就給您做。

      顧客(你):太好了,我等不及要嘗嘗了。

      用代碼表示

      // 抽象工廠
      class SnackFactory {
      public:
          virtual std::unique_ptr<Snack> createSnack() = 0;
          virtual ~SnackFactory() {}
      };
      
      // 具體工廠
      class OctopusBallFactory : public SnackFactory {
      public:
          std::unique_ptr<Snack> createSnack() override {
              return std::make_unique<OctopusBall>();
          }
      };
      
      // 客戶端代碼
      int main() {
          OctopusBallFactory factory;
          auto snack = factory.createSnack();
          snack->serve(); // 章魚小丸子老板:歡迎光臨,我們的章魚小丸子是這條街上最好吃的!
          return 0;
      }
      

      第四幕:小吃攤的繁榮

      美食街上的小吃攤變成了一家家各具特色的小吃店,每家店都有自己的招牌小吃,顧客可以根據自己的口味,選擇不同的店鋪品嘗小吃。

      顧客(你):這條街上的小吃種類真多,每種都想嘗嘗。

      老板:是啊,我們每家店都有自己的特色,歡迎您常來嘗試。

      顧客(你):我會的,下次再帶朋友一起來。

      用代碼表示

      // 可以為每種小吃創建不同的工廠類
      class RoastedColdNoodlesFactory : public SnackFactory {
      public:
          std::unique_ptr<Snack> createSnack() override {
              return std::make_unique<RoastedColdNoodles>();
          }
      };
      
      class PancakeFactory : public SnackFactory {
          // ...實現
      };
      
      // ...其他小吃工廠類
      

      結語

      工廠方法模式通過定義一個創建小吃的接口,讓具體的工廠類負責生產具體的小吃產品。這樣,當需要新增小吃種類時,只需新增相應的工廠,而無需修改既有代碼,提高了程序的可擴展性和可維護性。

      工廠方法模式的優缺點

      • 優點

        • 提高了代碼的擴展性,新增小吃種類無需修改原有代碼。
        • 將對象的創建和使用分離,提高了代碼的靈活性。
        • 利用多態,可以在運行時決定創建哪種類型的產品。
      • 缺點

        • 隨著產品種類的增加,可能需要創建很多工廠類,導致系統變得復雜。
        • 客戶端需要知道具體的工廠類名稱,可能降低了一些封裝性。

      應用場景

      • 當系統由多個部分組成,且各部分都有共同的生產對象的需求時。
      • 當需要強調對象創建和對象使用分離的場景時。

      總結來說,簡單工廠模式適合用于產品類型較少且不會頻繁增加的情況,而工廠方法模式則適合于產品類型較多且可能會頻繁增加的場合。

      工廠方法模式通過使用多態減少了耦合,使得新增產品類型時,不需要修改工廠類,只需要添加相應的具體工廠類即可。

      以上就是工廠方法模式的全部內容了,下一期,我們將帶來抽象工廠模式的精彩故事,敬請期待!

      ??你的每一次??點贊 ?收藏 ??評論,都是我更新的動力,如有錯誤請留言指正,非常感謝!

      posted @ 2024-05-17 15:44  知微之見  閱讀(46)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 综合激情网一区二区三区| 欧美高清一区三区在线专区| 亚洲国产码专区在线观看| 一区二区中文字幕久久| 91中文字幕在线一区| 保山市| 久久国产免费直播| 精品人妻蜜臀一区二区三区| 九九热免费公开视频在线| 开心色怡人综合网站| 少妇高潮水多太爽了动态图| 99国产精品白浆在线观看免费| 亚洲精品成人一二三专区| 中文字幕在线精品国产| 精品人妻无码一区二区三区| 97欧美精品系列一区二区| 亚洲线精品一区二区三八戒| 日日摸夜夜添狠狠添欧美| 精品国产三级在线观看| 国产日韩一区二区在线| 熟女精品国产一区二区三区| 国产精品一品二区三区日韩| 欧美国产成人精品二区芒果视频| 日韩人妻无码一区二区三区久久| 亚洲中文无码手机永久| 亚洲午夜精品国产电影在线观看| 91中文字幕在线一区| 国产日产亚洲系列最新| 黄色大全免费看国产精品| 日韩一区二区三区一级片| 国产精品不卡区一区二| 中文字幕无码乱码人妻系列蜜桃| 成人欧美一区在线视频| 亚洲夂夂婷婷色拍ww47| 亚洲国产欧美在线人成| 亚洲成在人线AⅤ中文字幕| 一区二区三区放荡人妻| 亚洲欧洲日产国码AV天堂偷窥| 亚洲a成人片在线观看| 国产极品粉嫩尤物一线天| 少妇又爽又刺激视频|