良好的设计肯定要符合这个两个标准,各个组成部分(如类)的具有高内聚与低耦合的特性。
如果说一个类具有定义明确单一功能,并且这个类的一切对执行这个任务是必不可少的,那么这个类就具有内聚性。
内聚不只局限于类这个层面设计,再更低的层面比如类中的具体方法也要符合;再更高的层面如包、系统、子系统层面也要符合。
测试内聚性一个很好的方法:用简短的话语描述实体(类,方法,等)的功能,要求话语中不能带“和”,比如这个类的功能是(计算和存储)。
用于描述一个类对另外一个类的依赖程度。
如果一个系统间的组成部分相互依赖是最小时,这个系统的耦合性较低。当然耦合是不可能完全避免的,我们的目的是消除不必要的耦合,从而增加系统可维护性。
例子:
如果说A类已依赖了B类,可能有以下几种形式
这种依赖可能会引起下面两个问题
boolean isJuniorOperator(Person p)
{
Date birthDate = p.getBirthDate();
// return true if birthDate is less than 18 years
// before today’s date
}
这种耦合方式,如果Persion类的getBirthDate()方法修改,则DriversLicense类可能也需要修改。建议直接使用Date类型作为参数来降低耦合。
原文:https://www.cnblogs.com/cloud9527/p/14246069.html