必需和提供的接口有什么区别

时间:2014-05-04 12:16:14

标签: java oop interface uml modeling

我一般都知道:

接口是引用类型,它类似于类, 它只能包含常量,方法签名,默认方法,静态方法和嵌套类型。方法体仅适用于默认方法和静态方法。接口无法实例化 - 它们只能由类实现或由其他接口扩展?

但是必需和提供的接口有什么区别?

4 个答案:

答案 0 :(得分:13)

提供和必需的接口总是参考接口的概念,表明观点。

我希望以下图表能够阐明这个问题。

enter image description here

在实施级别上,提供的接口是由类实现的接口(在最常见的意义上,例如,类B实现接口I)。 必需的接口是组件对接口的任何使用(例如,如果A类定义了具有接口I作为参数的方法,则这意味着A类具有所需的接口I)。

答案 1 :(得分:4)

必需且提供的接口似乎是与UML相关的术语,其中提供的接口描述了类提供的功能,所需的接口描述了另一个类所需的功能:further reading

在Java中,所有接口都是相同的;提供/必需之间没有区别。

上一个链接不再有效,但https://www.ibm.com/developerworks/rational/library/dec04/bell/index.html可以提供帮助

答案 2 :(得分:3)

我认为你在一般意义和语言特定的构造中混淆了界面,也称为界面。

一般来说,界面意味着两个部分/对象/系统之间的反应点。在非常低的级别,您可以说对象的所有公共成员(方法+字段)构成其内部。

在更高的抽象级别,程序员经常将API视为库/系统的接口。但这并不意味着这个API只包含一个Java接口。 API包含库的用户使用的所有对象,方法,配置文件,配置文件。这可能是您所需和提供的接口的内容。

如果您编写java libary,通常需要Java标准库的API(Java包中的所有内容) - 这将是必需的接口。 (它可以由任何实现的JVM提供,例如Android使用与Java相同的接口,但它不是java)另一方面,您的库也会暴露一些接口 - 人们可以使用您的库的方式 - 这将是称为提供的接口。 (再次,如果我说接口我不是一个java接口,它可能是几个接口+实现+一些值类的混合)

您可能遇到的另一个术语是SPI Service Provider Interface,它类似于API,但SPI的用户不会调用此接口,而是实现它并将其暴露回原始系统。这是描述插件界面的一种方式。

答案 3 :(得分:0)

接口可以被视为两个代理或组件之间的契约。该概念可以应用于类的内容,通过网络端点和许多其他系统进行交互的容器中的程序。为了执行符合合同的交易,一个代理要求对方提供服务或结果,而另一个代理或组件则根据请求输入向代理或组件提供结果。该接口基于漫游器代理之间的协议。合同的基础定义了要从请求代理传递的有限数量的信息对象,以匹配服务提供代理或组件的规范。提供代理通过基于请求代理提供的对象的过程来产生结果对象或结果。通过发送对象,消息或传输数据或完成更改状态的操作,将结果传输到请求代理。 请求的部分或组件操纵所需的接口。服务提供代理或组件操纵提供的接口以传输结果消息。 请注意,结果可能是确定的(我们在大多数设计用户案例中都希望这样做),但是该服务也可能具有随机响应,这是因为存在不受控制的噪声干扰了导致最终对象或动作的过程,或者是由于就像量子力学系统一样,过程本质上是随机的。
类,方法或函数始终可以被视为具有与提供者接口,给出响应的函数或方法相匹配的所需侧(调用,传递调用参数)的接口的元素。但是,该概念可以用于描述任何一种信号系统与组件之间符合接口协定模型的接口之间的交互。