为什么建议将服务合同定义为接口

bal*_*hmi 10 wcf interface

为什么建议将服务合同定义为接口.将它们作为课程有什么特别的优势?

And*_*aew 13

主要目标是将服务与实现分开定义

您的服务用户不应该知道您如何实施您的服务,但他应该知道他可以做什么操作以及如何操作.

这就是为什么它使用接口而不是类,因为接口不包含实现.

您可以共享您的界面一次,即使您每天更改其方法的实现,也不会担心多年.最终用户无需重新编译使用您服务的代码


mjv*_*mjv 6

当然[有几个优点]!

主要的可能是实现支持所述接口的多个类并且可以互换地使用这些类[关于特定接口].其中一个直接用途是用于测试的模拟类; 这也适用于IoC(控制反转)模式,更常见的是我们关心"什么"而不是"谁",即重要的是无论哪个类都符合合同(API) )无论是谁"谁"(哪一类).

Interfaces的另一个显着优势是模块化行为的能力.例如,您的应用程序可能实现一个概念,例如List(可以迭代,提供多个项目等),以及小部件验证器(某些应用程序特定的东西).通过让两个接口"描述"这个特定的对象,您可以使用该类的实例,只要您使用List(并且只是那个),并且类似地,您可以将它用作小部件验证器(并且只是那个),无论何时需要这些验证器.这类似于多重继承但更灵活.

简而言之(以及从此开始的一些其他答案),接口定义合同和类()实现它.
从技术上讲,单个类可以完成这两个任务,即你没有__need __来接口,但是对于大多数可以由几个类实现的行为来定义API是非常可取的(无论是多个实现几乎相同的东西)与"模拟类"或非常不同的类一样,但提供一个特定的通用服务/功能,如两个非常不同的列表.)