2015-10-08 58 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

正如上面的回答解释,接口继承组成是两个独立的关注,所以它是没有意义的偏向了另一种。他们可以共存,但他们不需要。