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

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

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

      小小及

      適配器模式

      使用場景:將一個類的接口轉換成客戶希望的另外一個接口,從而使原本由于接口不兼容而不能一起工作的類可以一起工作。適配器充當一個中介的角色,鏈接”他人”與”自己”。

      例子:世界各國插座標準都不盡相同,甚至同一國家的不同地區也可能不一樣。例如,中國一般使用兩腳扁型,而俄羅斯使用的是雙腳圓形。那么,如果去俄羅斯旅游,就會出現一個問題:我們帶去的充電器為兩腳扁型,而他們提供的插座為雙腳圓形,如何給手機充電呢?總不能為了旅客而隨意更改墻上的插座吧,而且俄羅斯人一直都這么使用,并且用的很好。俗話說入鄉隨俗,那么只能自己想辦法解決了。

      1. 對象適配器:

      俄羅斯提供的插座:(他人的)

      // target.h
      #ifndef TARGET_H
      #define TARGET_H
      
      #include <iostream>
      
      // 俄羅斯提供的插座
      class IRussiaSocket
      {
      public:
          // 使用雙腳圓形充電(暫不實現)
          virtual void Charge() = 0;
      };
      
      #endif // TARGET_H

      再來看看我們自帶的充電器:(自己的)

      // adaptee.h
      #ifndef ADAPTEE_H
      #define ADAPTEE_H
      
      #include <iostream>
      
      using namespace std;
      
      // 自帶的充電器 - 兩腳扁型
      class OwnCharger
      {
      public:
          void ChargeWithFeetFlat() {
              cout << "OwnCharger::ChargeWithFeetFlat" << endl;
          }
      };
      
      #endif // ADAPTEE_H
       

      創建適配器:電源適配器(中介)

      // adapter.h
      #ifndef ADAPTER_H
      #define ADAPTER_H
      
      #include "target.h"
      #include "adaptee.h"
      
      #ifndef SAFE_DELETE
      #define SAFE_DELETE(p) { if(p){delete(p); (p)=NULL;} }
      #endif
      
      // 電源適配器
      class PowerAdapter : public IRussiaSocket
      {
      public:
          PowerAdapter() : m_pCharger(new OwnCharger()){}
          ~PowerAdapter() {
              SAFE_DELETE(m_pCharger);
          }
          void Charge() {
              //  使用自帶的充電器(兩腳扁型)充電
              m_pCharger->ChargeWithFeetFlat();
          }
      
      private:
          OwnCharger *m_pCharger;  // 持有需要被適配的接口對象 - 自帶的充電器
      };
      
      #endif // ADAPTER_H

      使用方法:

      // main.cpp
      #include "adapter.h"
      
      int main()
      {
          // 創建適配器
          IRussiaSocket *pAdapter = new PowerAdapter();
      
          // 充電
          pAdapter->Charge();
      
          SAFE_DELETE(pAdapter);
      
          getchar();
      
          return 0;
      }
      

      2.類適配器

      Target 和 Adaptee 保持不變,只需要將 Adapter 變為多繼承的方式即可:

      #ifndef ADAPTER_H
      #define ADAPTER_H
      
      #include "target.h"
      #include "adaptee.h"
      
      // 電源適配器
      class PowerAdapter : public IRussiaSocket, OwnCharger
      {
      public:
          PowerAdapter() {}
          void Charge() {
              // 使用自帶的充電器(兩腳扁型)充電
              ChargeWithFeetFlat();
          }
      }
      

       除此之外,其他用法和“對象適配器”一致。

       

      參考:https://blog.csdn.net/liang19890820/article/details/66973296

       

       

      posted on 2018-08-04 11:00  小小及  閱讀(159)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 国产精品有码在线观看| 高级艳妇交换俱乐部小说| 日韩放荡少妇无码视频 | 色欲国产精品一区成人精品| 亚洲中文字幕乱码一区| 1769国内精品视频在线播放| 厨房与子乱在线观看| 女人裸体性做爰视频| 国产毛片精品av一区二区| 中文字幕在线观看一区二区| 国产日产欧产系列| 国产精品自在自线视频| 国产互换人妻xxxx69| 无码国模国产在线观看免费| 仁怀市| 亚洲久久色成人一二三区| 国产欧美精品一区二区三区四区| 日韩精品18禁一区二区| 日本熟妇XXXX潮喷视频| 精品无码午夜福利理论片| 深夜福利成人免费在线观看 | 大战丰满无码人妻50p| 久久热这里只有精品66| 国产乱码一区二区三区| 中日韩黄色基地一二三区| 亚洲精品国产免费av| 精品人妻av区乱码| 久久青草国产精品一区| 欧美日韩国产一区二区三区欧| 日韩有码中文在线观看| 伊人久久久大香线蕉综合直播| 精品国产亚洲av麻豆特色| 亚洲av永久无码精品水牛影视| 欧美成人一卡二卡三卡四卡| 美女午夜福利视频一区二区| 樱桃视频影院在线播放| 国产精品毛片在线完整版| 欧美熟妇乱子伦XX视频| 内射一区二区三区四区| 风流少妇又紧又爽又丰满| 精品人妻少妇一区二区三区|