banxitan

          統計

          留言簿(2)

          閱讀排行榜

          評論排行榜

          適配器模式(Adapter)

          為一個接口提供缺省實現,這樣子類可以從這個缺省實現進行擴展.而不必從原有接口進行擴展.作為適配器模式的一個特例,缺省適配模式在java語言中有著特殊的應用.(引用java模式書)

          adapter是一個非常常用的設計模式.
          像windows的每個窗口,事件很多個.關閉,移動,最大化,最小化,
          java代碼設計如下:
          interface 窗口{
          public void 關閉();
          public void 移動();
          public ovid 最大化();
          ...
          ...
          }
          如果客戶點擊了關閉按鈕,java類實現如下:
          Frame implements 窗口{
          public void 關閉(){
          System.out.println("關閉窗口");
          }

          public void 移動()[
          }
          public ovid 最大化(){
          }
          ...
          ...
          }
          這里面我們可以看出,我們關注的只有關閉按鈕觸發的事件,其它的我們不用管.但是在java類中,我們必須把接口的所有方法都給實現.這樣我們連一些沒有用的方法也得給實現.那怕是空實現.


          下面我們來建一個抽象類來實現這個接口.
          public abstract Frame implements 窗口{
          public void 關閉(){

          }

          public void 移動(){
          }
          public ovid 最大化(){
          }
          ...
          ...
          }
          這里我們可以看出,抽象類給每個接口一個空的實現,那我們都可以在抽象類的基礎上進行擴展。關閉功能實現如下:
          public CloseFrame extends Frame{
          public void 關閉(){
          System.out.println("關閉窗口");

          }
          }

          像在java中的事件處理都是用適配器模式來實現的。接口,抽象類都是已經寫好的。我們只需要實現具體功能的類就可以了。

          再舉個簡單的例子:
          假如存在如下接口:
          interface TestInterface{
          void test1();
          void test2();
          void test3();
          }
          如果我們只關注test1接口應該怎樣寫呢。
          abstract class TestAbstract implements Test{
          public void test1(){
          }
          public void test2(){
          }
          public void test3(){
          }
          }
          class TestTest1 extends TestAbstract{
          public void test1(){
          System.out.println("方法1實現");
          }
          }
          那么在什么情況下用相信大家已經能看得出來了吧。假如你不準備實現接口的所有方法。就可以建一個抽象類來實現這個接口的所有方法,當然這里全都是空的實現.然后再寫一個類繼承這個抽象類就可以得到你想要的結果了.

          posted on 2009-07-06 21:17 MikyTan 閱讀(188) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 新蔡县| 织金县| 莱州市| 开鲁县| 霍林郭勒市| 佛山市| 沈阳市| 阜阳市| 冷水江市| 前郭尔| 高清| 高淳县| 霍州市| 金平| 贵阳市| 广西| 渭南市| 南充市| 华安县| 阳曲县| 黑山县| 精河县| 福泉市| 万载县| 新源县| 莱芜市| 宣武区| 吉安市| 区。| 广饶县| 鸡东县| 井研县| 古交市| 江西省| 海口市| 镇雄县| 景洪市| 祁连县| 武威市| 屯门区| 玉田县|