隨筆-126  評(píng)論-247  文章-5  trackbacks-0

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

          1. 類的適配器模式結(jié)構(gòu)圖:

          從圖中可以看出,Adaptee 類(源類)并沒有 operation2() 這個(gè)方法,而客戶端正期待這個(gè)方法,為使客戶端能夠使用 Adaptee 類,在此為其提供了一個(gè)中間環(huán)節(jié),

          即 Adapter 類(適配器類),把 Adaptee 的 API 與 Target 的 API 銜接起來,在這里,Adapter 與 Adaptee 是繼承關(guān)系,這就決定了這個(gè)適配器的模式是類。

          示意圖的實(shí)現(xiàn)源碼:


          package pattern.adapter;
          /**
           * -----------------------------------------
           * @描述  源類(需要適配的類)
           * @作者  fancy
           * @郵箱  fancydeepin@yeah.net
           * @日期  2012-8-5 <p>
           * -----------------------------------------
           
          */

          public class Adaptee {

              
          public void operation1(){
                  
                  
          //do other things here
              }

          }




          package pattern.adapter;
          /**
           * -----------------------------------------
           * @描述  目標(biāo)接口
           * @作者  fancy
           * @郵箱  fancydeepin@yeah.net
           * @日期  2012-8-5 <p>
           * -----------------------------------------
           
          */

          public interface Target {

              
          public void operation1();
              
              
          public void operation2();
              
          }




          package pattern.adapter;
          /**
           * -----------------------------------------
           * @描述  適配器
           * @作者  fancy
           * @郵箱  fancydeepin@yeah.net
           * @日期  2012-8-5 <p>
           * -----------------------------------------
           
          */

          public class Adapter extends Adaptee implements Target{

              
          public void operation2(){
                  
                  
          //do other things here
              }

          }




          2. 對(duì)象的適配器模式結(jié)構(gòu)圖:

          從圖中可以看出,Adaptee 類(源類)并沒有 operation2() 這個(gè)方法,而客戶端正期待這個(gè)方法,為使客戶端能夠使用 Adaptee 類,在此為其提供了一個(gè)包裝類,

          即 Adapter 類(適配器類),它包裝了一個(gè) Adaptee 類的實(shí)例,從而此包裝類能夠把 Adaptee 的 API 與 Target 的 API 銜接起來,在這里,Adapter 與 Adaptee 是委派關(guān)系,

          這就決定了這個(gè)適配器的模式是對(duì)象。

          示意圖中的 Target 和 Adaptee 源代碼不變,下面來看一下 Adapter 類的源碼:


          package pattern.adapter;
          /**
           * -----------------------------------------
           * @描述  適配器
           * @作者  fancy
           * @郵箱  fancydeepin@yeah.net
           * @日期  2012-8-5 <p>
           * -----------------------------------------
           
          */

          public class Adapter implements Target{

              
          private Adaptee adaptee;
              
              
          public Adapter(Adaptee adaptee){
                  
          this.adaptee = adaptee;
              }

              
              @Override
              
          public void operation1() {
                  
                  adaptee.operation1();
              }


              @Override
              
          public void operation2() {
                  
                  
          //do other things here
              }


          }



            
          posted on 2012-08-05 16:50 fancydeepin 閱讀(1123) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 来安县| 军事| 石景山区| 潼南县| 南江县| 秦皇岛市| 永泰县| 大荔县| 平定县| 婺源县| 惠水县| 康马县| 托克托县| 青田县| 额尔古纳市| 广东省| 云南省| 西昌市| 镇雄县| 霍邱县| 土默特左旗| 阳泉市| 盐源县| 宜城市| 萝北县| 岳池县| 宜丰县| 武威市| 绥棱县| 南溪县| 敦煌市| 新巴尔虎右旗| 沐川县| 隆林| 无为县| 涡阳县| 资兴市| 饶平县| 清涧县| 呈贡县| 贵港市|