2012-02-24 71 views
0

我看到這個成語很多代碼庫我工作中,它基本上是:這是什麼模式/成語?有什麼好處?

接口 - >實現

例如 - >抽象定義getter/setter方法類

interface Foo{ 
    void doSomethingA(); 
    void doSomethingB(); 
} 

abstract class AbstractFoo implements Foo{ 
    protected int x; 
    protected String y; 
    int getX(){ return x;} 
    void setX(int x){ this.x = x;} 
    String getY(){ return y;} 
    void setY(String y){ this.y = y;} 
} 
//One or more concrete classes extending AbstractFoo 

是否有這個名稱?我能看到的唯一好處是擴展AbstractFoo的類不需要重新實現它們的getter和setter。

+0

也許'Foo'的繼承和抽象? – sll 2012-02-24 19:45:53

回答

0

我認爲它的名字是「Abstract Implementation」。你不會把getter和setter放到抽象類中,但是所有接口的實現都可能有共同之處。這個想法是提前通過照顧普通的東西來提供接口的實現。如果實現者想要以完全不同的方式實現內容,那麼實現者可能仍然選擇不擴展抽象基類。

6

這是不是的設計模式。

接口很明顯:實現接口的每個類都必須實現其方法 - 不問任何問題。

如果需要,抽象類可以爲每個方法提供默認行爲。所以是的,這是爲了子類開發人員的方便。請記住,編寫抽象類的人可能會提供至少一個具體的子類,所以他們會獲得好處。

吸氣劑和制定者不是重點。任何好的IDE都可以爲你生成它們。該功能對於複雜的默認行爲更有意義。

看看Joshua Bloch在設計Collection API時如何使用這個成語在java.util包中獲得巨大成功。