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

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

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

      設計模式之簡單工廠模式(學習筆記)

      定義

      簡單工廠模式(Simple Factory Pattern)是一種創建型設計模式,它定義一個用于創建對象的接口,但由一個單獨的類來實現實際創建的工作。簡單工廠模式通過在一個類中集中管理對象的創建過程,可以減少客戶端與具體類之間的耦合,使得代碼結構更加清晰和易于維護。通過專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。

      為什么使用簡單工廠模式?

      1. 統一管理對象創建:
        • 簡單工廠模式將對象的創建邏輯集中到一個工廠類中,客戶端不需要知道具體的創建細節,只需調用工廠類提供的方法即可獲得所需的對象,減少了客戶端對類創建過程的依賴。
      2. 減少耦合:
        • 客戶端與具體類之間的依賴被轉移到了工廠類,客戶端不再直接依賴具體類,從而降低了系統的耦合度。
      3. 更好的維護性:
        • 當需要更改對象的創建邏輯或引入新的對象類型時,只需修改工廠類,而不需要修改客戶端代碼,提高了系統的可維護性。

      實現步驟

      1. 定義抽象產品類

        • 定義所有具體產品類的共同接口,客戶端將通過這個接口來使用具體產品。
      2. 實現具體產品類

        • 實現產品接口的具體產品類,這些類包含了產品的實際業務邏輯。
      3. 定義工廠類

        • 定義一個工廠類,包含一個用于創建產品對象的靜態方法,根據不同的參數來實例化不同的具體產品類,并返回產品接口類型的對象。

      優缺點和適用場景

      優點

      1. 統一管理對象創建

        • 將對象創建邏輯集中管理,使代碼更加清晰易懂。
      2. 減少客戶端與具體類的耦合

        • 客戶端只需依賴于產品接口和工廠類,不再直接依賴具體產品類。
      3. 便于擴展和維護

        • 添加新產品類時,只需修改工廠類,客戶端代碼無需變動。

      缺點

      1. 工廠類的職責過重

        • 工廠類集中了所有產品對象的創建邏輯,可能導致代碼過于復雜,不利于擴展。
      2. 不符合開閉原則

        • 添加新產品時需要修改工廠類的代碼,違背了開閉原則。

      適用場景

      1. 對象創建邏輯復雜

        • 當對象的創建過程較為復雜時,可以使用簡單工廠模式將創建邏輯集中管理,簡化客戶端代碼。
      2. 客戶端不需要關心對象的創建細節

        • 當客戶端不需要知道對象的創建過程,只需使用對象時,可以使用簡單工廠模式隱藏創建細節。

      咖啡店的例子

      假設我們有一個咖啡店,根據客戶的需求生產不同類型的咖啡。我們可以使用簡單工廠模式來實現咖啡的創建。
      #include <iostream>
      #include <memory>
      #include <string>
      
      
      // 抽象產品類:咖啡
      class Coffee {
      public:
          virtual ~Coffee() {}
          virtual std::string getDescription() const = 0;
          virtual double cost() const = 0;
      };
      
      
      // 具體產品類:美式咖啡
      class Americano : public Coffee {
      public:
          std::string getDescription() const override {
              return "Americano";
          }
          double cost() const override {
              return 5.0;
          }
      };
      
      
      // 具體產品類:拿鐵咖啡
      class Latte : public Coffee {
      public:
          std::string getDescription() const override {
              return "Latte";
          }
          double cost() const override {
              return 6.0;
          }
      };
      
      
      // 簡單工廠類
      class CoffeeFactory {
      public:
          enum CoffeeType {
              AMERICANO,
              LATTE
          };
      
      
          static std::shared_ptr<Coffee> createCoffee(CoffeeType type) {
              switch (type) {
                  case AMERICANO:
                      return std::make_shared<Americano>();
                  case LATTE:
                      return std::make_shared<Latte>();
                  default:
                      return nullptr;
              }
          }
      };
      
      
      int main() {
          // 創建美式咖啡
          std::shared_ptr<Coffee> americano = CoffeeFactory::createCoffee(CoffeeFactory::AMERICANO);
          std::cout << "Description: " << americano->getDescription() << ", Cost: " << americano->cost() << " RMB" << std::endl;
      
      
          // 創建拿鐵咖啡
          std::shared_ptr<Coffee> latte = CoffeeFactory::createCoffee(CoffeeFactory::LATTE);
          std::cout << "Description: " << latte->getDescription() << ", Cost: " << latte->cost() << " RMB" << std::endl;
      
      
          return 0;
      }

       

      posted @ 2024-07-16 20:46  大雄的叮當貓  閱讀(177)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 内射视频福利在线观看| 亚洲日韩av在线观看| 日韩乱码人妻无码中文字幕视频| 竹菊影视欧美日韩一区二区三区四区五区| 国产免费一区二区不卡| 亚洲精品无amm毛片| 在线看无码的免费网站| 草草浮力影院| 姐姐6电视剧在线观看| 海原县| 免费观看国产女人高潮视频| 国产精品一区在线蜜臀| 被灌满精子的少妇视频| 少妇被多人c夜夜爽爽av| 国产91久久精品成人看| P尤物久久99国产综合精品| 中文字幕人妻无码一夲道| 日韩乱码视频一区二区三区| caoporn成人免费公开| 精品无码一区二区三区水蜜桃| 国产精品久久久久久久久久直播| 日韩av熟女人妻一区二| 国产精品女同一区三区五区| 国产美女高潮流白浆视频| 中文字幕无码免费久久| 激情在线网| 国产乱码精品一区二区三| 国产熟女一区二区三区蜜臀 | 辽宁省| 国产综合色在线精品| 国产一区二区一卡二卡| 国产激情免费视频在线观看| 无码免费大香伊蕉在人线国产| 亚洲男女羞羞无遮挡久久丫| 国产在线精品成人一区二区| 日韩高清不卡免费一区二区| 丰满无码人妻热妇无码区| 日日躁夜夜躁狠狠久久av| 亚洲激情av一区二区三区| 国产盗摄xxxx视频xxxx| 精品无码av无码免费专区|