Oop 接口继承和接口组合的区别
Q1:使用“接口继承”和“带接口的组合”设计OOP代码的原理有什么不同?(请专注于处理接口部分,因为我知道继承和组合,以及为什么组合优于继承) 问题2:当接口继承优于组合或组合+接口时,有没有任何用例场景 附言:重点应放在继承和组合中界面的作用上。任何涉及相关设计的额外提示都将受到高度赞赏。A1 您可以说接口继承是声明性的,因为它只说明接口应该是什么样子:Oop 接口继承和接口组合的区别,oop,inheritance,interface,composition,Oop,Inheritance,Interface,Composition,Q1:使用“接口继承”和“带接口的组合”设计OOP代码的原理有什么不同?(请专注于处理接口部分,因为我知道继承和组合,以及为什么组合优于继承) 问题2:当接口继承优于组合或组合+接口时,有没有任何用例场景 附言:重点应放在继承和组合中界面的作用上。任何涉及相关设计的额外提示都将受到高度赞赏。A1 您可以说接口继承是声明性的,因为它只说明接口应该是什么样子: public IDerivedInterface : ISomeOtherInterface { /*...*/ } 这些接口仍然没有行为
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();
}
另一方面,与接口的组合是组装实现的一种方式
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方法不关心
A2
正如上面的回答所解释的,接口继承和组合是两个独立的关注点,因此没有必要偏袒其中一个。它们可以共存,但不一定要共存。您缺少了像
java
或C
这样的语言标签。。。此外,接口可以由接口继承(使用建议的语言)