Terry.Li-彬

          虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks

          為一個接口提供缺省實現,這樣子類可以從這個缺省實現進行擴展.而不必從原有接口進行擴展.作為適配器模式的一個特例,缺省適配模式在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實現");
          }
          }
          那么在什么情況下用相信大家已經能看得出來了吧。假如你不準備實現接口的所有方法。就可以建一個抽象類來實現這個接口的所有方法,當然這里全都是空的實現.然后再寫一個類繼承這個抽象類就可以得到你想要的結果了.

           

           
           1package com.lucky.util;
           2
           3import java.util.Collection;
           4
           5public interface IAdapterMode {
           6    
           7    public void print();
           8
           9    public boolean insert(Object instance);
          10    
          11    public boolean delete(Object instance);
          12    
          13    public boolean update(Object instance);
          14    
          15    public Collection find(String sql);
          16}

          17
           1package com.lucky.util;
           2
           3import java.lang.reflect.Method;
           4import java.lang.reflect.Proxy;
           5import java.util.Collection;
           6
           7public abstract class AdapterModeAbstract implements IAdapterMode {
           8    
           9    public void print() {
          10        // TODO Auto-generated method stub
          11        System.out.println("調用了print");
          12    }

          13
          14    public boolean delete(Object instance) {
          15        // TODO Auto-generated method stub
          16        return false;
          17    }

          18
          19    public Collection find(String sql) {
          20        // TODO Auto-generated method stub
          21        return null;
          22    }

          23
          24    public boolean insert(Object instance) {
          25        // TODO Auto-generated method stub
          26        return false;
          27    }

          28
          29    public boolean update(Object instance) {
          30        // TODO Auto-generated method stub
          31        return false;
          32    }

          33    
          34}

          35
          posted on 2007-09-23 11:35 禮物 閱讀(183) 評論(0)  編輯  收藏

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

          網站導航:
           
          主站蜘蛛池模板: 游戏| 治多县| 合山市| 观塘区| 汤阴县| 松潘县| 琼海市| 七台河市| 长治县| 临泉县| 湘乡市| 高邑县| 漾濞| 通海县| 阿合奇县| 布尔津县| 淮北市| 大名县| 会泽县| 万安县| 永修县| 黎平县| 西乡县| 临汾市| 荔浦县| 鄂尔多斯市| 东平县| 潞城市| 墨脱县| 招远市| 奉节县| 普洱| 长汀县| 江油市| 施秉县| 苗栗县| 江城| 乌什县| 临泽县| 红原县| 峨眉山市|