组件连接/绑定中“->”、“<-”与“=”的区别

在组件的链接绑定中经常可以看到“->”、“<-”和“=”。这三个符号可以将接口绑定到相应的接口和模块,现在的问题是:这三个符号有着怎样的区别和联系呢?

在介绍三者的区别和联系前,要先介绍下规范元素(程序中的模块和接口等)的外部性(external)和内部性(internal)。其实内部性和外部性是很好理解的:在组建规范(specification)中的规范元素成为外部性规范元素,而把在组件实现(implementation)中的规范元素称为内部性规范元素。举例说明:

module a{

provides interface b;

}

implementation{

components c;

b->c.b_;

}

其中在module中的语句引入的接口b即具有外部性,而在implementation中引入的组件c即具有内部性。

现在让我们来讨论“->”、“<-”和“=”这三个符号的区别:

“=”可以很广泛的绑定两个有效的规范元素,其绑定范围为:内部-外部、外部-外部。

“->”和“<-”是完全等效的,这两个符号的用法范围没有“=”宽泛,只能绑定 内部-内部。


对于接口与组件之间的连接和绑定,这里补充几点:

1、隐式绑定:对于s1=s2.a和s1=s2(其中s1为接口,s2为组件,a为组件中提供的接口),这两个不同的绑定形式,其最终效果是一致的(编译器会自动在s2中寻找和s1对应的接口)。但建议选用s1=s2.a形式(笔者遭遇过s1=s2不能编译通过,但s1=s2.a能顺利通过的情况)。

2、多“扇入”多“扇出”:对于下面的形式:

x=a1.x;

x=a2.x;

当接口x中的命令被调用时,多次绑定将会导致接口x中的事件多次触发(扇入),以及多个函数的执行(扇出)。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值