高内聚模式(High Cohesion)是GRASP模式中为降低类的复杂程度,简化控制而提出的面向对象设计的原则性模式。高内聚(High Cohesion)与低耦合(Low Coupling)模式是GRASP其他模式的根本。
问题:
怎么做才能降低类的复杂程度,简化控制?
High Cohesion模式所提倡的解决方案:
紧密相关的功能(职责)应该分配给同一个类。
所谓内聚,是指单个物体(类)内部的功能聚集度。比如,只包含有相互关联的功能的类,具有高内聚性,同时,它的外部表现(作用,意图)也就明显;反之,如果一个类由一些不相关的功能构成,它的内聚性就低,它的外部表现就不明显,一方面很难理解它的作用和意图,另一方面,一旦需求变化,扩展性就差。
在现实世界里,高内聚(High Cohesion)表现在“各司其职”上,也就是说自己只干跟自己相关的工作,别人的工作让别人做。比如,电视机只有信息传播的功能,冰箱只有冷藏冷冻的功能,它们就是一个功能高内聚的个体。为什么不把电视机与冰箱的功能做在一起呢?因为做在一起的话,一方面,只需要电视或冰箱功能的消费者却不得不同时购买它们的整合体,而且消费者如果想换代电视机时,冰箱也只有一起换代;另一方面,如果厂家需要升级电视功能,也不得不考虑怎么整合原来的冰箱功能。也就是说功能低内聚的产品,不利于消费者使用,不利于生产者维护,不利于产品本身的升级换代。
同样,反映到软件设计上,低内聚的类存在使用难,维护升级难的缺点。
高内聚(High Cohesion)与低耦合(Low Coupling)是GRASP模式的核心概念,是其它GRASP模式的根本。
优秀的面向对象设计,一般都遵从[高内聚,低耦合]原则。
应用High Cohesion模式的好处:
- 聚集相关功能,结构清晰,容易理解
- 只聚集相关功能,使得类的职责单一明确,从而降低类的复杂程度,使用简单
最新评论