连接器是一个特性,它指定了一个链接,允许在结构化分类器中扮演某些角色的两个或多个实例之间进行通信。这个链接可能是一个关联的实例,也可能表示实例能够通信的可能性,因为它们本身是作为参数传递的,保存在变量或插槽中,或者因为通信的实例是相同的实例。
链接可以通过简单的指针来实现,也可以通过复杂的网络连接来实现。与在关联的分类器的任何实例之间指定链接的关联相反,连接器仅在播放所连接部件的实例之间指定链接。
连接器使用类似于关联的符号进行渲染 。可选的连接器标签遵循以下语法:
连接器标签 :: = [ 连接器名称 ] [':'( 关联名称 | 关联类名称 )]
其中连接器名称是该连接器的名称, 关联名是的该关联的名称,并且关联类名称是该关联类的名称。guillemet中的关键字或原型可以放在图上连接器名称的上方或前面。可以在连接器名称之后或下方放置属性字符串。
连接器链接组件可以是:
·委托连接器,或者是
·组装连接器。
派生了连接器属性的类型:具有一个或多个连接端口的连接器,该端口不属于某一部件,也不是行为端口,属于委托;否则,它就是一个程序集。
连接器的合同是一组指定连接器上有效交互模式的行为。
组装连接器
组装连接器是两个或多个部件之间的连接器或部件上的端口,这些端口定义了一个或多个部件提供其他部件使用的服务。
组装连接器的执行时间语义是信号沿着连接器实例传递。指向和来自不同部分的多个连接器,或n-ary连接器(其中n> 2)表示将在执行时确定将发起或处理信号的实例。
连接的端口之间的接口兼容性使系统中的现有组件可以被(至少)提供相同服务集的组件替换。同样,在使用组件通过提供现有服务来扩展系统的上下文中,还可以添加新功能,连接器可用于在新组件定义中进行链接。
组装连接器被标记为两个或多个部件之间的连接器或部件上的端口。
身份验证和客户组件的端口之间的组装连接器
当组件连接器连接简单端口(提供或需要单一接口的端口)时,可以通过提供的接口和所需的接口之间的“球-插座”连接标记来表示。
身份验证和客户组件的简单端口之间的装配连接器
球-插座标记不能用于连接“复杂”端口或不带端口的部件。
如果多个组件具有提供或需要相同接口的简单端口,则可以显示表示该接口的单个符号,并且可以将来自组件的线绘制到该符号。此表示选项适用于使用“球-插座”表示法显示接口,或仅使用所需的或提供的接口符号。
可由三个部件组成的连接器
委托连接器
委托连接器是将组件的外部合同(由其端口指定)链接到该行为的实现的连接器。它表示事件的转发(操作请求和事件):到达一个端口的信号(该端口有一个或多个部件的委托连接器)或部件上的端口将被传递给这些目标进行处理。
委托连接器是对一个组件实例可用的行为的声明,实际上不是由该组件本身实现的,而是由一个或多个具有“兼容”功能的实例实现的。这些情况是通过从端口到兼容端口或零件的委托连接器建模的。
委派连接器可用于对行为的分层分解进行建模,其中由组件提供的服务最终可以由嵌套在其内的多个级别中的一个实现。“委托”一次词意味着在所连接的端口之间可能发生具体的消息和信号流,可能在多个级别上。应当注意,这样的信号流并非总是在所有系统环境或实现中实现(即,它可以仅是设计时间)。
一个端口可以委托给从属组件上的一组端口。在这种情况下,这些从属端口必须共同提供委托端口的委托功能。在执行时,信号将被传送到适当的端口。在多个目标端口支持处理相同的信号的情况下,信号将被发送到所有这些从属端口。。
委托连接器被标记为从委托端口到处理端口或部件的连接器。
从委托端口到UserServlet部分的委托连接器
如果委派是通过简单的端口处理的,则可以选择将连接器显示为连接到单个棒棒糖或插座标记。
。
从委托端口到简单的SearchEngine端口的委托连接器
从简单的身份验证组件端口到委托端口的委托连接器
|