隨筆-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 閱讀(1010) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 日喀则市| 石渠县| 儋州市| 新津县| 金寨县| 峨边| 新晃| 朝阳区| 静安区| 翼城县| 河东区| 清涧县| 凯里市| 蕉岭县| 五河县| 合作市| 成武县| 桓仁| 竹山县| 霸州市| 连州市| 锦州市| 湾仔区| 横峰县| 罗江县| 定州市| 五河县| 博罗县| 荥经县| 黔东| 阿巴嘎旗| 林州市| 隆回县| 清远市| 宁陵县| 海阳市| 吉安市| 锦州市| 临高县| 沂南县| 顺平县|