隨筆-46  評(píng)論-64  文章-2  trackbacks-0
          Adapter模式
          使用Adapter模式的目的:把一個(gè)類的接口轉(zhuǎn)換成客戶端需要的接口。
          適用場合:
             當(dāng)你想使用一個(gè)現(xiàn)有類的功能,但是它的接口不能滿足你的需要
             當(dāng)你想創(chuàng)建一個(gè)循環(huán)使用的類,用于使一些沒有相互聯(lián)系的類,或者是未知的將來會(huì)引進(jìn)的類之間協(xié)調(diào)合作完成某些功能。也就是說,這些類不必要具備一致的接口
             當(dāng)你要使用數(shù)個(gè)現(xiàn)有的的子類,但是要對(duì)每一個(gè)子類進(jìn)行接口的改寫變得很不切實(shí)際。
           
          具體的例子
             變壓器(Adapter),變壓器把一種電壓變換成另一種電壓。美國的生活用電電壓是110V,而中國的電壓是220V。如果要在中國使用美國電器,就必須有一個(gè)能把220V電壓轉(zhuǎn)換成110V電壓的變壓器。這個(gè)變壓器就是一個(gè)Adapter。
           
          客戶買回了美國的電器Machine,工作電壓110V,電器插頭為3相(陰、陽、地級(jí)),所以需要一個(gè)電壓和相級(jí)的轉(zhuǎn)換器或者說是適配器來使這個(gè)Machine能在中國使用。
          一、類的Adapter模式
          package Adapter;

          interface 電器需要使用
          {
              
          public void 兩相插口();
              
          public void 電壓_110V();
          }


          class 中國_供電
          {
              
          protected int v;
              
          public 中國_供電()
              
          {
                  v
          =220;
                  System.out.println(
          "中國供電提供的電壓是:" +v+"V");
              }

              
          //返回中國電壓的值
              public int voltage()
              
          {
                  
          return v;
              }

          }

          class 變壓器_相位轉(zhuǎn)換器 extends 中國_供電 implements 電器需要使用 
          {

              
          public void 兩相插口() {
                  System.out.println(
          "變壓器_相位轉(zhuǎn)換器——提供三相到兩相轉(zhuǎn)換操作,返回兩相插口");
                  
              }


              
          public void 電壓_110V() {
                  v 
          = this.voltage()/2;
                  System.out.println(
          "變壓器_相位轉(zhuǎn)換器——轉(zhuǎn)換后提供電壓為:"+v+"V");
              }

              
          }


          public class ClassAdapter {

              
          public static void main(String[] args) {
                  變壓器_相位轉(zhuǎn)換器 device 
          = new 變壓器_相位轉(zhuǎn)換器();
                  
                  device.電壓_110V();
                  device.兩相插口();
                  
                  System.out.println(
          "經(jīng)過變壓器_相位轉(zhuǎn)換器的包裝(Warpper),在美國買來的電器能夠使用啦!^0^");

              }


          }


          二、對(duì)象的Adapter模式
          package Adapter;

          interface 電器需要使用_a
          {
              
          public void 兩相插口();
              
          public void 電壓_110V();
          }


          class 中國_供電_a
          {
              
          protected int v;
              
          public 中國_供電_a()
              
          {
                  v
          =220;
                  System.out.println(
          "中國供電提供的電壓是:" +v+"V");
              }

              
          //返回中國電壓的值
              public int voltage()
              
          {
                  
          return v;
              }

          }

          class 變壓器_相位轉(zhuǎn)換器_a implements 電器需要使用_a 
          {
              中國_供電_a supply 
          = new 中國_供電_a();

              
          public void 兩相插口() {
                  System.out.println(
          "變壓器_相位轉(zhuǎn)換器——提供三相到兩相轉(zhuǎn)換操作,返回兩相插口");
                  
              }


              
          public void 電壓_110V() {
                  supply.v 
          = supply.voltage()/2;
                  System.out.println(
          "變壓器_相位轉(zhuǎn)換器——轉(zhuǎn)換后提供電壓為:"+supply.v+"V");
              }

              
          }


          public class ObjectAdapter {

              
              
          public static void main(String[] args) {
                  變壓器_相位轉(zhuǎn)換器_a device 
          = new 變壓器_相位轉(zhuǎn)換器_a();
                  
                  device.電壓_110V();
                  device.兩相插口();
                  
                  System.out.println(
          "經(jīng)過變壓器_相位轉(zhuǎn)換器的包裝(Warpper),在美國買來的電器能夠使用啦!^0^");

              }


          }


          posted on 2006-02-24 21:13 jht 閱讀(1012) 評(píng)論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 西城区| 巨野县| 海林市| 无棣县| 德安县| 镇坪县| 岑巩县| 栖霞市| 伊宁县| 佳木斯市| 仙桃市| 蒙自县| 锦屏县| 循化| 大埔区| 广灵县| 梓潼县| 绥化市| 同仁县| 碌曲县| 酉阳| 曲松县| 商水县| 武陟县| 灯塔市| 循化| 深泽县| 广灵县| 上栗县| 满洲里市| 阿合奇县| 龙州县| 安平县| 遂平县| 宁河县| 金山区| 宁波市| 永兴县| 焦作市| 五莲县| 潜江市|