本节内容:★★★
详细设计中的模块化与信息隐藏
模块化与耦合、内聚
面向对象中的耦合与内聚
分解与抽象
模块化与信息隐藏思想
- 设计质量
好的软件可以通过多个独立的团队在交流相对较少的情况下同时进行开发,即并行开发不同模块,以缩短整个开发时间。
当变化发生的时候,好的软件也只需要修改一个模块,而不影响别的模块。
可理解、易修改、易复用是软件设计中需要特别关注的设计质量标准。
模块化与信息隐藏
高质量的软件设计应该将复杂系统分解为独立的模块。
信息隐藏更多地从模块的外部(抽象)来思考。
模块化
分解
耦合:分解后模块之间的关系的复杂程度。
内聚:一个模块内部的联系的紧密性。
耦合程度
内容耦合
定 义:一个模块直接修改或依赖于另一个模块的内容。
耦合度:最高
消 除
公共耦合
定 义:一组模块共享同一个全局数据结构。
耦合度:比较强
不可避免,
尽量消除。
外部耦合
定 义:一组模块访问同一全局简单变量。
耦合性:比较强
不可避免,
减少使用。
小 结
高耦合对模块的灵活性及稳定性,产生不好的影响。
可以将数据放在模块内部进行管理,以消除高耦合。
控制耦合
定 义:一个模块给另一个模块传递控制信息。
耦合性:较弱
可以接受
印记耦合(特征耦合)
定 义:模块之间传递数据结构,但只使用其中一部分。
耦合性:较弱
可以接受
数据耦合
定 义:两个模块之间只传递简单的数据项参数。
耦合性:最弱
最理想的
偶然内聚
模块执行多个完全不相关的操作。
模块化设计实践
低耦合设计
分层的体系结构设计
将可复用的代码或设计抽象为构件(Component) 等
高内聚设计
分层的体系结构设计
设计抽象类 等