高内聚低耦合

高内聚低耦合

高内聚

高内聚是另外一个评判软件设计质量的标准。内聚更为专业的说法叫做功能内聚,是对系统中元素职责的相关性和集中度的量度。如果元素有高度的相关职责,除了这些职责在没有其他的工作,那么该元素就有高内聚。
内聚指的是模块内部的功能,最强的就是功能不能拆分,也就是原子化。

例如

这就好像,如果我是一个项目经理,我的职责是监控和协调我的项目各个阶段的工作。当我的项目进入需求分析阶段,我会请求需求分析员来完成;当我的项目进入开发阶段,我会请求软件开发人员来完成;当我的项目需要测试的时候,我会请求测试人员……如果我参与了开发,我就不是一个高内聚的元素,因为开发不是我的职责。

为什么要高内聚

  • 可读性
  • 复用性
  • 可维护性和易变更性

低耦合

耦合就是元素与元素之间的连接,感知和依赖量度。这里说的元素即是功能,对象,系统,子系统。模块。

例如

现在有方法A和方法B
我们在A元素去调用B元素,当B元素有问题或者不存在的时候,A元素就不能正常的工作,那么就说元素A和元素B耦合

耦合带来的问题

当元素B变更或者不存在时,都将影响元素A的正常运作,影响系统的可维护性和易变更性。同时元素A只能运行在元素B中,这也大大的降低了A元素的可复用性。正因为耦合的种种弊端,我们才需要在软件设计上追求低耦合

如何实现低耦合

  • 元素A不能过度依赖元素B
  • 合理的职责划分:让系统中的对象各司其职,不仅是提高内聚的要求,同时也可以有效地降低耦合
  • 使用接口而不是继承:我们不难发现。继承就是一种耦合,假如子类A继承了父类B,不论是直接继承或者间接继承,一但父类B不存在或者发生任何变更,都将导致子类A不得不修改或者重写。假如父类B的子类数十上百的,这就是灾难性的变更。

高内聚低耦合
https://newztx.github.io/2024/02/21/高内聚低耦合/
作者
Cranky Dove
发布于
2024年2月21日
许可协议