隨筆-46  評論-64  文章-2  trackbacks-0
          Adapter模式
          使用Adapter模式的目的:把一個類的接口轉換成客戶端需要的接口。
          適用場合:
             當你想使用一個現有類的功能,但是它的接口不能滿足你的需要
             當你想創建一個循環使用的類,用于使一些沒有相互聯系的類,或者是未知的將來會引進的類之間協調合作完成某些功能。也就是說,這些類不必要具備一致的接口
             當你要使用數個現有的的子類,但是要對每一個子類進行接口的改寫變得很不切實際。
           
          具體的例子
             變壓器(Adapter),變壓器把一種電壓變換成另一種電壓。美國的生活用電電壓是110V,而中國的電壓是220V。如果要在中國使用美國電器,就必須有一個能把220V電壓轉換成110V電壓的變壓器。這個變壓器就是一個Adapter。
           
          客戶買回了美國的電器Machine,工作電壓110V,電器插頭為3相(陰、陽、地級),所以需要一個電壓和相級的轉換器或者說是適配器來使這個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 變壓器_相位轉換器 extends 中國_供電 implements 電器需要使用 
          {

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


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

              
          }


          public class ClassAdapter {

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

              }


          }


          二、對象的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 變壓器_相位轉換器_a implements 電器需要使用_a 
          {
              中國_供電_a supply 
          = new 中國_供電_a();

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


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

              
          }


          public class ObjectAdapter {

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

              }


          }


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

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 迁安市| 永新县| 隆昌县| 曲水县| 垣曲县| 海阳市| 梁山县| 皮山县| 洛扎县| 天长市| 洛南县| 双江| 大港区| 太康县| 千阳县| 营山县| 嫩江县| 嵩明县| 荔波县| 阿瓦提县| 诸暨市| 苍南县| 黄龙县| 金沙县| 岳普湖县| 康马县| 大英县| 永兴县| 资溪县| 藁城市| 卓尼县| 江津市| 宿松县| 堆龙德庆县| 焦作市| 桃园市| 江西省| 贡嘎县| 连山| 兖州市| 雷波县|