Java設計模式之缺省模式

1、概念

缺省適配模式爲一個接口提供缺省實現,這樣子類型可以從這個缺省實現進行擴展,而不必從原有接口進行擴展。開發中BaseAdapter實現ListAdapter就是使用這種設計模式。

2、運用

一個接口有很多抽象方法,當要寫接口的實現類,就必須要實現接口中很多無關的抽象方法,這時就可以使用缺省適配模式,設計一個抽象的適配器類實現接口,併爲所有方法提供空實現。用戶類只需要繼承適配器類,實現必要的方法就可以了。

模式所涉及的角色有:

InterfaceA:目標接口。可能定義有很多方法,但這些方法不一定全都被用戶類所需要。

AbstractClassB:缺少適配模式的核心。它實現InterfaceA接口,爲所有方法提供空的實現。

ClassBImpl:用戶類,它需要實現InterfaceA接口。但因爲InterfaceA方法衆多,而ClassBImpl中對其中一兩個方法(比如這裏的Fun1())感興趣。如果直接實現InterfaceA,就需要提供衆多的空方法。所以它繼承AbstractClassB,只需要重寫它感興趣的方法即可。既實現了InterfaceA接口,又省去了定義空方法的麻煩。

public interface InterfaceA{

void fun1();

void fun2();

void fun3();

void fun4();

void fun5();

}

以上代碼定義了目標接口,接下來創建一個抽象的適配器類實現接口。

class AbstractB implements InterfaceA{

@Override

public void fun1() {}

 

@Override

public void fun2() {}

 

@Override

public void fun3() {}

 

@Override

public void fun4() {}

 

@Override

public void fun5() {}

}

觀察以上代碼可知,抽象的適配器類實現了目標接口,並給所有的方法提供空實現。

此時我們只需創建抽象類的子類,實現自己感興趣的方法即可。

class ClassBImpl extends AbstractB{

@Override

public void fun1() {

super.fun1();

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章