1
Q1:使用「接口繼承」和「接口組合」設計OOP代碼時,哲學有什麼區別? (請注意處理接口部分,因爲我知道繼承和組合以及爲什麼組合比繼承更受青睞)。 Q2:任何使用情況下的接口繼承應該優於組合接口還是組合+接口?接口繼承和接口之間的區別
P.S.焦點應該是繼承和組合中的接口角色,並且任何處理相關設計的附加提示都將非常感謝。
Q1:使用「接口繼承」和「接口組合」設計OOP代碼時,哲學有什麼區別? (請注意處理接口部分,因爲我知道繼承和組合以及爲什麼組合比繼承更受青睞)。 Q2:任何使用情況下的接口繼承應該優於組合接口還是組合+接口?接口繼承和接口之間的區別
P.S.焦點應該是繼承和組合中的接口角色,並且任何處理相關設計的附加提示都將非常感謝。
你可以說接口繼承是聲明,因爲它僅規定的接口應該是什麼樣子:
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
方法構成IBaz
和IGrault
。這些接口中的一個或兩個接口可以定義爲獨立接口或不帶接口 - DoFoo
方法不在意。
正如上面的回答解釋,接口繼承和組成是兩個獨立的關注,所以它是沒有意義的偏向了另一種。他們可以共存,但他們不需要。
您缺少像java或''C#''這樣的語言標記......接口*可以被接口繼承(在建議的語言中) –