我發現自己希望一個接口可以由在幾個類中實現的方法組成。如果我能做到這一點,我可以爲一個角色創建一個接口,該角色具有該類中的一個函數和該類中的一個函數。兩個類之間的接口拆分
任何語言對此支持嗎?典型的Java/C#/ VB.NET風格的OO有可能嗎?
例如:我有一個函數,它接受一個值對象,並將所有零件保存到正確的表中。我只是創建了一個名爲StatsPersistence
的接口,我將其注入到函數中,以便我可以對其行爲進行單元測試,但它缺少一種方法。我想能夠添加一個方法,但該方法與前兩個不同的類,所以這顯然是不可能的。所以,我在一個類中有兩個方法,另一個在另一個類中,但它們都是「StatsPersistence」的「角色」所需的。而且,這些方法也是其他角色所需要的三種方法,而不僅僅是這一方面。
我有什麼:
interface StatsPersistence
public saveSession(session) // fulfilled in much larger StatsActiveRecord
public saveAppUse(appUse) // fulfilled in much larger StatsActiveRecord
我想要什麼:
interface StatsPersistence
public saveSession(session) // fulfilled in much larger StatsActiveRecord
public saveAppUse(appUse) // fulfilled in much larger StatsActiveRecord
public updateUnit(name) // fulfilled in much larger UnitActiveRecord
我可以只是使包裝所有三種方法一個新的類,並有該類剛剛作出的呼籲兩個實現者,但這看起來就像很多OOverkill一樣。
我的想法是傾向於:
- 我的界面作用過於寬泛
- 作出這樣的包裝這三個類,並讓它實現我想要的界面
可能是門面模式? – 2012-03-30 00:45:11
「接口是類必須滿足的合同」而不是「類是接口必須應用的合同」。 – Dhananjay 2012-03-30 10:58:09
@Dhananjay我知道,我只是希望可能有一個「未知的未知」潛藏在我對界面和類的理解之外,以及它們如何構成。也許一些新特性的使用,或者我不知道的函數式編程技術。 – Steve 2012-04-02 14:15:06