我经常听/读到关于基于接口的编程,但我不太清楚这到底是什么意思。基于接口的编程是一个独立的主题吗?是否有书籍介绍了相关内容?如果有,有没有人能推荐几本好书呢?
我在阅读有关良好API设计的文章时发现了基于接口编程,并希望了解更多信息。目前我还不清楚如何正确地围绕接口设计API。
非常感谢任何信息。
我经常听/读到关于基于接口的编程,但我不太清楚这到底是什么意思。基于接口的编程是一个独立的主题吗?是否有书籍介绍了相关内容?如果有,有没有人能推荐几本好书呢?
我在阅读有关良好API设计的文章时发现了基于接口编程,并希望了解更多信息。目前我还不清楚如何正确地围绕接口设计API。
非常感谢任何信息。
OOSC2 中的 Bertrand Meyer 清楚地解释了为什么“关闭”系统并使其更加模块化会提高其质量。
看看这些非常受欢迎的讨论是否有帮助:
YourInterface foo = CreateYourInterface();
foo.DoWork();
foo.DoMoreWork();
YourInterface foo = CreateYourInterface();
我不建议在C#开发中过度使用这个。
基于接口的编程基本上是指针对接口进行编程。您开发要使用的接口和合同,接口的实际实现隐藏在这些合同后面。
在.NET之前,这是非常普遍的,因为在Windows上获得可重用组件的最佳方法是通过COM,它在任何地方都使用接口。然而,鉴于.NET能够支持单个运行时(CLR)中的多种语言,并且与本机代码相比,在版本控制方面具有更好的支持,因此在使用C#进行编程时,基于接口的编程的实用性大大降低(除非您尝试创建COM组件,在这种情况下,您仍将间接从C#类创建COM接口)。
基于接口的编程可以被认为是将功能的实现和访问功能的方式解耦。
您定义一个接口
interface ICallSomeone {
public bool DialNumber(string number);
}
然后编写您的实现
public class callsomeone: ICallSomeone {
public bool DialNumber(string number) {
//拨打号码,返回结果
}}
您使用接口而不关心实现。如果更改实现,因为它只使用接口,所以没有任何影响。
从非常抽象的角度来看,基于接口的编程类似于管道工使用的组件(管接头和管道)。
只要管道和接头按照指定的接口制造(例如螺纹数量和间隔等),各种制造商就可以为潜在由其他供应商制造的管子提供接头(但遵守前述的接头/管道接口)。
因此,组件之间的互操作性更强,管道工可以选择来自各个供应商的不同产品、价格范围等,以创建功能完善的管道系统。
将管子和接头替换为软件组件,相似之处惊人地简单。