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

来源:互联网 发布:java课程设计 编辑:程序博客网 时间:2024/06/05 04:45

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

在介绍三者的区别和联系前,要先介绍下规范元素(程序中的模块和接口等)的外部性(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中的事件多次触发(扇入),以及多个函数的执行(扇出)。


原创粉丝点击