接口继承和接口组合的区别

difference between interface inheritance and composition with interface

Q1:使用"interface inheritance"和"composition with interface"设计OOP代码在理念上有什么不同? (请专注于处理接口部分,因为我知道继承和组合以及为什么组合优于继承)。

问题 2:接口继承优于组合或组合+接口的任何用例场景?

P.S。重点应该放在接口在继承中的作用上,composition.And任何与相关设计有关的附加提示都将不胜感激。

A1

你可以说接口继承是声明性的,因为它只说明了接口应该是什么样子:

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

这些接口仍然没有行为,只有shape

另一方面,

与接口组合是assemble实现.

的一种方式
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

正如上面的回答所解释的,接口继承组合是两个独立关注点,所以偏袒一个是没有意义的。它们可以共存,但不是必须。