一、接口及其图形表示
接口是一组操作的集合,其中的每个操作用于描述类或组件的一个服务。
(一)接口的名称
每个接口都有一个唯一的名称。
名称由两部分组成:
- 简单名。即接口自身的标识符。
- 路径名。即接口所在的包的名称。
简单名和路径名通过冒号(:)连接,以下是接口名称图形表示:
由上图可见,接口名称可以省略路径名,以简写的方式展示。
(二)接口的操作
接口是一组已命名的操作,但是接口并不负责这些操作的具体实现。
接口的操作只是一种约定,类或组件提供一组方法来实现这些约定的操作。
像类一样,接口的操作也可以用可见性、范围、标记值、并发性来修饰。
操作的图形表示如下,和类的图形表示很相似,属于类的一种衍型:
接口的操作可以仅仅显示操作的名称,也可以显示出接口的特性(可见性、范围、并发性等等)。
衍型是对UML词汇的扩展,用于创建与已有的构造块相似但针对特定问题的新种类的构造块。在图形上,把衍型表示成用双尖括号(<<>>)括起来的名字,放在其他元素名之上。
(三)供接口和需接口
接口是类或组件之间的约定。
对于一个接口来说,它可能是 A 组件提供的,B 组件需要的。所以,对于 A 来说,这个接口称之为供接口
,对于 B 来说,这个接口称之为需接口
。
但不管怎样,供接口和需接口只是相对于类或组件来说的,接口的定义始终只有一个。
供接口和需接口有两种表现形式,一种是简单形式,一种是展开形式。图示如下:
由上图可见,供接口一方提供了接口的具体实现。
二、接口在系统中的意义
在一个系统中,实现关注分离是非常重要的,这意味着系统中各个部分可以相对独立,在系统演化的过程中,一个部分的变化不会影响到另一个部分。
要达到这种分离程度,一个重要方法就是清楚地描述系统中的接缝,在独立变化的部分之间划出界线。
在 UML 中,用接口对系统中的接缝建模。接口订立了一个合约,而合约的供给方和需求方都可以独立变化,只要它们遵循合约即可。
所以说,接口可以实现关注分离,降低部分之间的耦合,从而将一个复杂庞大的系统问题“分而治之”。