• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-91  評論-137  文章-0  trackbacks-0

            適配器模式

            前序

            姚明,大家都認識吧。在他剛去NBA的時候,什么都聽不懂,必須在旁邊配個翻譯,否則就無法聽懂教練在說什么。這也正符合了設計模式中的一種模式:適配器模式。

            適配器模式

            將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。

            實現方式(UML類圖)


            實現代碼

            #include <stdio.h>

             

            // 球員

            class Player

            {

            public:

                   Player(char* _name) : name(_name){}

                  

                   virtual void Attack()=0;

                   virtual void Defense()=0;

             

                   char* name;

            };

             

            // 前鋒

            class Forwards : public Player

            {

            public:

                   Forwards(char* name) : Player(name){}

                  

                   virtual void Attack()

                   {

                          printf("前鋒 %s 進攻\n", name);

                   }

                  

                   virtual void Defense()

                   {

                          printf("前鋒 %s 防守\n", name);

                   }

            };

             

            // 中鋒

            class Center : public Player

            {

            public:

                   Center(char* name) : Player(name){}

                  

                   virtual void Attack()

                   {

                          printf("中鋒 %s 進攻\n", name);

                   }

                  

                   virtual void Defense()

                   {

                          printf("中鋒 %s 防守\n", name);

                   }

            };

             

            // 后衛

            class Guards : public Player

            {

            public:

                   Guards(char* name) : Player(name){}

                  

                   virtual void Attack()

                   {

                          printf("后衛 %s 進攻\n", name);

                   }

                  

                   virtual void Defense()

                   {

                          printf("后衛 %s 防守\n", name);

                   }

            };

             

            // 外籍中鋒

            class ForeignCenter

            {

            public:

                   void Attack()

                   {

                          printf("外籍中鋒 %s 進攻\n", name);

                   }

                  

                   void Defense()

                   {

                          printf("外籍中鋒 %s 防守\n", name);

                   }

                  

                   char* name;

            };

             

            // 翻譯者

            class Translator : public Player

            {

            public:

                   Translator(char* name) : Player(name)

                   {

                          wjzf.name = name;

                   }

                  

                   virtual void Attack()

                   {

                          wjzf.Attack();

                   }

                  

                   virtual void Defense()

                   {

                          wjzf.Defense();

                   }

            protected:

                   ForeignCenter wjzf;

            };

             

            int main()

            {

                   Player* b = new Forwards("巴蒂爾");

                   b->Attack();

                  

                   Player* m = new Guards("麥克格雷迪");

                   m->Attack();

                  

                   Player* ym = new Translator("姚明");

                   ym->Attack();

                   ym->Defense();

                  

                   delete b;

                   delete m;

                   delete ym;

                  

                   return 0;

            }

            運行結果



            所有文件打包下載

            posted on 2011-08-14 15:27 lwch 閱讀(2699) 評論(4)  編輯 收藏 引用 所屬分類: 設計模式

            評論:
            # re: 適配器模式 2011-08-14 20:19 | func
            配圖搞錯了吧。  回復  更多評論
              
            # re: 適配器模式 2011-08-14 21:48 | 飯中淹
            配圖。。。  回復  更多評論
              
            # re: 適配器模式 2011-08-14 22:58 | lwch
            @func
            已經修正  回復  更多評論
              
            # re: 適配器模式 2013-02-05 11:28 | hsc
            寫得不錯, 學以致用, 向你學習  回復  更多評論
              
            久久国产精品波多野结衣AV| 伊人久久精品线影院| 久久中文精品无码中文字幕| 久久精品国产亚洲精品| 久久综合九色综合久99| 久久精品国产亚洲av日韩| 精品久久久久一区二区三区| 久久久久亚洲AV无码专区首JN| 日韩人妻无码精品久久免费一 | 久久国产欧美日韩精品| 精品久久久久香蕉网| 久久人妻少妇嫩草AV无码蜜桃| 久久99久国产麻精品66| 久久国产成人| 国产精品福利一区二区久久| 精品久久久久久无码不卡| 亚洲精品国产成人99久久| 无码国内精品久久综合88| 国产精品久久久久久福利漫画| 久久精品国产欧美日韩99热| 国产高潮国产高潮久久久91 | 国产成人久久久精品二区三区| 亚洲国产小视频精品久久久三级 | 无码8090精品久久一区| 久久精品国产精品亚洲精品| 久久人人爽人人人人爽AV| 久久综合五月丁香久久激情| 亚洲国产精久久久久久久| 俺来也俺去啦久久综合网| 亚洲国产精品久久电影欧美| 欧美国产成人久久精品| 久久亚洲AV成人无码软件| 亚洲日本va午夜中文字幕久久 | 久久午夜伦鲁片免费无码| 狠狠精品久久久无码中文字幕| 久久久久久国产a免费观看黄色大片| 国产—久久香蕉国产线看观看| 国产精品久久久久久久午夜片| 91亚洲国产成人久久精品网址 | 久久综合88熟人妻| 亚洲精品乱码久久久久66|