究竟什么是"基于接口的编程"?

Fla*_*ack 18 .net c# design-patterns interface

我经常听到/阅读基于接口的编程,但我并不清楚这究竟意味着什么.基于接口的编程是一个真正独立的主题,实际上有关于它的书籍吗?如果是这样,有人可以推荐任何好的吗?

我遇到了基于接口的编程,因为我正在阅读有关如何设计好API并希望了解它的更多信息.现在我不清楚如何正确地设计围绕接口的API.

任何信息都非常感谢.

Jon*_*eet 30

它基本上是用接口而不是具体类(或更糟的是静态方法)表达依赖关系的问题.因此,如果您的某个类需要执行身份验证,则应该提供一个IAuthenticator(或其他).

这意味着:

  • 您可以在实现真实依赖项之前编写代码
  • 你可以很容易地通过模拟测试(无需模拟类,这会变得很难看)
  • 很明显你依赖于API而不是实现(即你有更松散的耦合)


Ces*_*Gon 9

Jaroslav Tulach"实用API设计"第6章的标题是"代码反对接口,而不是实现".它解释说,通过对接口而不是特定实现进行编码,您可以解耦系统中的模块(或组件),从而提高系统质量.

OOSC2中的 Bertrand Meyer 清楚地解释了为什么"关闭"系统并使其更加模块化会提高其质量.