构件
构件的特性如下:
- 独立的部署单元
- 作为第三方的组装单元
- 没有(外部的)可见状态
特性解释如下:
独立的部署单元 :这些特性有几重含义。一个构件是独立可部署的,意味着它必须能跟它所在的环境及其他构件完全分离。因此,构件必须封装自己的全部内部特征。并且,构件作为一个部署单元,具有原子性,是不可拆分的。也就是说,第三方没有权利访问其所使用的任何构件的内部细节信息。
作为第三方的组装单元 :在这样的约束下,如果第三方厂商能将一个构件和其他构件组装在一起,那么这个构件不但必须具备足够好的内聚性,还必须将自己的依赖条件和所提供的服务说明清楚。换句话说,构件必须封装它的实现,并且只通过良好定义的接口与外部环境进行交互。
没有(外部的)可见状态 :最后,一个构件不能有任何(外部的)可见状态——这要求构件不能与自己的拷贝有所区别。但对于不影响构件功能的某些属性,例如,用于计费的序列号,则没有这种限制。通过对属性的可见性进行限制,允许用户在不影响构件的可见行为的前提下,使用合法的技术手段对那些影响性能的状态进行特殊处理。特别是,构件可以将某些状态专门用于缓存(缓存具有这样的特性:当它被清空时除了可能会降低性能以外,没有其他后果)。
组件 模块
参考:关于组件和模块
三者对比
有上可知,构件具有可复用性,并且构件定义了良好的接口用于与外部环境交互,将实现封装在自己的内部,具备足够好的内聚性。
所以,
三者从可复用性的角度来讲,由弱到强应该是:
模块—>组件—>构件
从粒度的大小来讲,似乎比较模糊,三者都有大有小的。。。