2015-10-08 65 views
1

Q1:使用「接口繼承」和「接口組合」設計OOP代碼時,哲學有什麼區別? (請注意處理接口部分,因爲我知道繼承和組合以及爲什麼組合比繼承更受青睞)。 Q2:任何使用情況下的接口繼承應該優於組合接口還是組合+接口?接口繼承和接口之間的區別

P.S.焦點應該是繼承和組合中的接口角色,並且任何處理相關設計的附加提示都將非常感謝。

+0

您缺少像java或''C#''這樣的語言標記......接口*可以被接口繼承(在建議的語言中) –

回答

1

A1

你可以說接口繼承是聲明,因爲它僅規定的接口應該是什麼樣子:

public IDerivedInterface : ISomeOtherInterface { /*...*/ } 

這些接口仍然沒有行爲,只有形狀

另一方面,具有接口的組合是一種組裝實現方式

public Foo DoFoo(Bar bar) 
{ 
    var qux = this.baz.Corge(bar); // baz is IBaz, an interface 
    var garply = this.grault.Waldo(qux); // grault is IGrault, another interface 
    return garply.ToFoo(); 
} 

DoFoo方法構成IBazIGrault。這些接口中的一個或兩個接口可以定義爲獨立接口或不帶接口 - DoFoo方法不在意。

A2

正如上面的回答解釋,接口繼承組成是兩個獨立的關注,所以它是沒有意義的偏向了另一種。他們可以共存,但他們不需要。