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

时间:2010-04-02 07:48:13

标签: wcf interface

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

3 个答案:

答案 0 :(得分:13)

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

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

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

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

答案 1 :(得分:6)

当然[有几个优点]!

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

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

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

答案 2 :(得分:1)

因为接口是合同而类是履行合同的手段。根据上下文可以有许多不同的方法来实现合同,因此将合同作为接口更有意义。可以有不同的实现