高内聚与低耦合

良好的设计肯定要符合这个两个标准,各个组成部分(如类)的具有高内聚与低耦合的特性。

内聚

如果说一个类具有定义明确单一功能,并且这个类的一切对执行这个任务是必不可少的,那么这个类就具有内聚性。
内聚不只局限于类这个层面设计,再更低的层面比如类中的具体方法也要符合;再更高的层面如包、系统、子系统层面也要符合。
测试内聚性一个很好的方法:用简短的话语描述实体(类,方法,等)的功能,要求话语中不能带“和”,比如这个类的功能是(计算和存储)。

耦合

用于描述一个类对另外一个类的依赖程度。
如果一个系统间的组成部分相互依赖是最小时,这个系统的耦合性较低。当然耦合是不可能完全避免的,我们的目的是消除不必要的耦合,从而增加系统可维护性。
例子:
如果说A类已依赖了B类,可能有以下几种形式

  1. B类作为局部变量
  2. B类作为方法参数
  3. B类作为方法返回值类型

这种依赖可能会引起下面两个问题

  1. 如果A类的系统要重构时,不管是否还需要B类,都还要继续依赖
  2. 如果B类被修改了,A类依赖的地方可能也需要修改
    假设有一个Persion类,类中有一个getBirthDate()方法,还有一个DriversLicense类,有一个isJuniorOperator()方法,用于判断是否是未成年人。
    如果isJuniorOperator(Persion p)直接使用Persion类作为参数
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类型作为参数来降低耦合。

posted @ 2021-01-07 13:54  Cloud_9527  阅读(111)  评论(0编辑  收藏  举报