2012-04-17 61 views
0

我正在嘗試修改遺留代碼,並且這樣做我遇到了這個問題:什麼是模塊化的Java接口的正確使用?

我有兩個屬於同一個模塊的類 - 以及許多其他類 - 每個類都有一個或多個公共方法使用else-在哪裏。我想爲模塊創建一個通用接口,但我不知道如何去做這件事。如果我爲模塊創建一個接口,那麼最終必須在所有使用該接口的類中實現空白方法,這聽起來不太好。但是,如果我創建一個可以通過特定的類我留下的將它們結合起來,這只是用於類型引用的所有跨域一個接口模塊中可以使用多個接口:

/-------------\  /-------------\ 
| Interface A |  | Interface B | 
\-------------/  \-------------/ 
/-------------\  /-------------\ 
| Class A |  | Class B | 
\-------------/  \-------------/ 

/-------------\  /-------------\ 
| Interface A |  | Interface B | 
\-------------/  \-------------/ 
      ^  ^
      |   | 
     /------------------\ 
     | Module Interface | 
     \------------------/ 

是否有任何的設計模式,這將有助於我與此或將組成特定模塊的接口組合成子接口來表示模塊類型是實現此目的的正確方法?

+0

這是什麼模塊?你在談論包,maven子項目......? – 2012-04-17 11:30:21

+0

我的意思是模塊的編程概念,它不是Java特定的東西。總體思路是創建模塊並將它們連接起來,這樣,當我們想要改變模塊的工作方式,也就是使其更有效時,我們將接口下的代碼替換掉,並且除此之外的所有內容都不知道更改。 – 2012-04-17 11:33:33

回答

3

我不知道我真的能理解你的問題,但您可以通過繼承將接口組合到一個接口中。接口支持多重繼承。

,可能是適用於你的模式是適配器模式:http://en.wikipedia.org/wiki/Adapter_pattern

也儘量不要讓接口,使他們着想。 Java有這麼久的歷史,試圖爲永遠不會有其他實現的東西創建接口。除非你製作一個API考慮KISS。

1

如果您創建了一個通用接口,該接口的用戶將期望其所有方法都能正常工作(除非文檔中明確指出瞭如何使用)。

如果你最終不得不對如何使用它的接口級別指定令人費解的規則,所以這兩個模塊正常工作,你有一個情況下創建一個自定義界面最好的主意。但是,如果兩個模塊中只有少數方法與另一個不同,並且如果調用差異不會中斷模塊,則可以創建自定義接口,然後提供每個模塊接口的默認抽象實現,實際的模塊從中得到。抽象的實現可以定義一個默認的(如什麼也不做)實現的所有方法中常見的接口,這樣具體的模塊類做nothave落實這些具體

interface AIface { 
    void methodA(); 
} 

interface BIface { 
    void methodB(); 
} 

interface CommonIface extends AIface, BIface { 
} 

abstract class CommonAbstract implements CommonIface { 
    @Override 
    void methodA() {} 
    @Override 
    void methodB() {} 
} 

class ModuleA extends CommonAbstract { 
    @Override 
    void methodA() { 
    // A's implementation 
    } 
} 

class ModuleB extends CommonAbstract { 
    @Override 
    void methodB() { 
    // B's implementation 
    } 
} 
相關問題