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

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

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

      設計模式之適配器模式(學習筆記)

      定義 

      適配器模式是一種結構型設計模式,它允許將一個類的接口轉換為客戶端希望的另一個接口。適配器使得原本由于接口不兼容而不能一起工作的類可以協同工作。通過創建適配器類,可以將現有類的接口轉換成目標接口,從而使這些類能夠在一起工作。

      為什么使用適配器模式

      1. 兼容性

        • 適配器模式能夠解決由于接口不兼容而無法直接協作的問題,使得現有的類能夠在新系統中復用。
      2. 代碼重用

        • 適配器模式允許在不修改現有代碼的情況下,將其整合到新的代碼結構中,實現代碼的重用。
      3. 靈活性

        • 通過適配器,可以在運行時動態地轉換接口,增強了系統的靈活性和擴展性。

      適配器模式的實現步驟

      1. 目標接口

        • 定義客戶端所期望的接口,即目標接口。
      2. 現有接口

        • 定義一個已經存在的類,它的接口與目標接口不兼容。
      3. 適配器類

        • 對象適配器

          • 繼承目標接口,通過組合持有現有類的實例,并在實現目標接口的方法中調用現有類的方法,實現接口轉換。
        • 類適配器

          • 繼承目標接口并同時繼承現有類,通過覆蓋現有類的方法來實現接口轉換。

      優缺點和適用場景

      優點

      1. 兼容性

        • 可以使得不兼容的接口一起工作,解決了接口不兼容的問題。
      2. 代碼重用

        • 可以在不修改現有類的情況下使用這些類,實現代碼重用。
      3. 靈活性

        • 可以動態地改變接口的實現,增強系統的靈活性和擴展性。

      缺點

      1. 復雜性增加

        • 需要額外編寫適配器類,增加了系統的復雜性。
      2. 性能開銷

        • 適配器模式會增加一個額外的層次,可能會帶來一定的性能開銷。

      適用場景

      1. 接口轉換

        • 當現有類的接口與目標接口不兼容時,可以使用適配器模式進行接口轉換。
      2. 遺留系統整合

        • 在整合遺留系統時,可以使用適配器模式將現有系統的接口轉換為新系統所需的接口。
      3. 第三方庫整合

        • 當需要使用第三方庫的類,而這些類的接口與系統不兼容時,可以使用適配器模式。

      例子:使用適配器模式將舊系統的接口轉換為新系統的接口

      #include <iostream>
      #include <memory>
      #include <string>
      
      
      // 目標接口:新的日志接口
      class Logger {
      public:
          virtual ~Logger() {}
          virtual void logMessage(const std::string& message) const = 0;
      };
      
      
      // 現有接口:舊的日志系統
      class OldLogger {
      public:
          void writeLog(const std::string& msg) const {
              std::cout << "Old Logger: " << msg << std::endl;
          }
      };
      
      
      // 對象適配器類:將舊的日志系統適配為新的日志接口
      class LoggerAdapter : public Logger {
      private:
          std::shared_ptr<OldLogger> oldLogger;
      public:
          LoggerAdapter(std::shared_ptr<OldLogger> oldLogger) : oldLogger(oldLogger) {}
      
      
          void logMessage(const std::string& message) const override {
              oldLogger->writeLog(message);
          }
      };
      
      
      // 類適配器類:將舊的日志系統適配為新的日志接口
      class ClassLoggerAdapter : public Logger, private OldLogger {
      public:
          void logMessage(const std::string& message) const override {
              writeLog(message);
          }
      };
      
      
      int main() {
          // 使用舊的日志系統
          std::shared_ptr<OldLogger> oldLogger = std::make_shared<OldLogger>();
          oldLogger->writeLog("Logging with the old logger");
      
      
          // 使用對象適配器將舊的日志系統適配為新的日志接口
          std::shared_ptr<Logger> logger = std::make_shared<LoggerAdapter>(oldLogger);
          logger->logMessage("Logging with the object adapter");
      
      
          // 使用類適配器將舊的日志系統適配為新的日志接口
          std::shared_ptr<Logger> classLogger = std::make_shared<ClassLoggerAdapter>();
          classLogger->logMessage("Logging with the class adapter");
      
      
          return 0;
      }

       

      posted @ 2024-07-18 15:04  大雄的叮當貓  閱讀(372)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 无码国产成人午夜电影在线观看| 图片区 小说区 区 亚洲五月| 亚洲AV日韩AV综合在线观看| 成人拍拍拍无遮挡免费视频| 国产狂喷潮在线观看| 九九热在线视频免费播放| 亚洲一区二区精品极品| 欧美性猛交xxxx乱大交丰满| 一区二区三区四区黄色片| 国产一区日韩二区欧美三区| 日韩av影院在线观看| 最近中文字幕免费手机版| 狠狠色噜噜狠狠狠狠7777米奇 | 4hu亚洲人成人无码网www电影首页| 国产女人18毛片水真多1| 国产99re热这里只有精品| 国产乱码1卡二卡3卡四卡5| 武装少女在线观看高清完整版免费 | 国产揄拍国产精品| 国产永久免费高清在线观看| 无码人妻黑人中文字幕| 成人国产精品日本在线观看| 亚洲第一区二区三区av| 久久国产成人高清精品亚洲| 人人做人人澡人人人爽| 色偷偷中文在线天堂中文| 久九九精品免费视频| 99久久无色码中文字幕| 国产精品一区二区中文| 桂东县| 成全影视大全在线观看| 亚洲高清 一区二区三区| 免费又大粗又爽又黄少妇毛片 | 日韩大片高清播放器| 在线天堂中文新版www| 自拍偷自拍亚洲精品熟妇人 | 东京热无码国产精品| 老司机精品成人无码AV| 元氏县| 国产亚洲精品福利在线无卡一| 日本中文字幕久久网站|