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