Oop 接口使用问题
为什么接口似乎与类完全相同,而只是函数声明。界面的主要好处是什么?除了多个类共享一个接口,但它仍然感觉像什么?每个类都有自己的实现,因此为什么要使用接口?在静态类型的面向对象语言中,接口使使用仅共享要使用的接口的类成为可能。当您需要在不同子系统之间交互时通常使用的接口。它还提供了松散耦合的好处,并隐藏了实际实现的对象 使用接口意味着接口的调用者不绑定到特定的实现 例如,如果您使用的是C,并且需要一个数据序列,那么您希望从Oop 接口使用问题,oop,language-agnostic,Oop,Language Agnostic,为什么接口似乎与类完全相同,而只是函数声明。界面的主要好处是什么?除了多个类共享一个接口,但它仍然感觉像什么?每个类都有自己的实现,因此为什么要使用接口?在静态类型的面向对象语言中,接口使使用仅共享要使用的接口的类成为可能。当您需要在不同子系统之间交互时通常使用的接口。它还提供了松散耦合的好处,并隐藏了实际实现的对象 使用接口意味着接口的调用者不绑定到特定的实现 例如,如果您使用的是C,并且需要一个数据序列,那么您希望从IEnumerable的角度看到这一点。您不在乎实现是什么——并且需要一个特
IEnumerable
的角度看到这一点。您不在乎实现是什么——并且需要一个特定的实现将限制代码的使用方式
另一个例子是
Stream
——它是一个抽象类而不是接口,但基本原理是相同的。您可以将任何类型的流解析为XmlDocument
(以选择流的任意使用)。不管它是文件流
、网络流
、内存流
还是其他任何东西,只要它支持所需的操作。它允许两个完全不相关的类实现相同的接口,因此可以以相同的方式使用。(比如调用ISortable.Sort在两个列表上使用完全不同的实现。
这就像多重继承,只是更好。:)
接口也用于在进程之间共享对象(Google for COM或Automation)。当使用接口进行设计时,需要强调预期的行为,而不会因任何实现无效的细节而造成污染 接口表示契约,允许应用程序的其余部分通过此接口使用遵守此契约的任何对象 简言之: