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