高内聚,低耦合的解释及实例【包学包会】

高内聚 (High Cohesion)

定义: 高内聚指的是模块内部各个部分之间的联系紧密,功能高度相关。一个高内聚的模块,其内部的各个功能都是围绕着一个单一的任务或目的来设计的。

优点:

  1. 易于理解和维护:由于模块内部功能相关,理解和修改这个模块的代码变得更加容易。
  2. 增强代码复用性:模块的功能明确,可以更方便地在其他项目中复用。
  3. 减少错误传播:模块内部发生错误时,不会轻易影响到其他模块。

例子: 假设有一个软件系统处理订单。一个高内聚的模块可能是一个专门处理订单支付的模块。这个模块包含了所有与支付相关的功能,例如验证支付信息、处理支付交易、记录支付日志等。所有这些功能都是围绕“支付”这个单一任务进行的。

低耦合 (Low Coupling)

定义: 低耦合指的是模块之间的联系尽可能地少和松散。模块之间通过简单的接口进行交互,彼此之间的依赖性很低。

优点:

  1. 增强系统的可维护性:由于模块之间的依赖性低,修改一个模块时,不太容易影响其他模块。
  2. 提高模块的独立性:模块可以独立开发、测试和部署。
  3. 增强系统的灵活性:可以更容易地替换或升级单个模块,而不需要对整个系统进行大规模修改。

例子: 继续上面的订单处理系统,假设我们有另一个模块处理订单的发货。一个低耦合的设计可能是支付模块和发货模块通过一个消息队列进行通信。当支付完成时,支付模块发送一个“支付成功”的消息到消息队列,发货模块监听这个消息并处理相应的发货逻辑。通过这种方式,支付模块和发货模块之间没有直接的依赖关系,只通过消息队列进行简单的交互,实现了低耦合。

综合实例

场景:网上购物系统

  1. 高内聚模块:

    • 用户管理模块:包含用户注册、登录、修改个人信息等功能。所有功能都围绕着用户管理这一核心任务。
    • 订单处理模块:包括订单创建、订单查询、订单取消等功能。所有功能都围绕订单处理这一任务。
  2. 低耦合设计:

    • 模块间通信:用户下订单时,订单处理模块通过接口通知库存管理模块扣减库存。接口设计简单且清晰,各模块独立实现。
    • 独立部署:各个模块(如用户管理、订单处理、库存管理)可以独立部署和更新,互不影响。

通过高内聚和低耦合的设计,可以实现系统的灵活性、可维护性和可靠性。

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内聚是指一个模块内的各个成员之间联系紧密,功能度集中。耦合是指各个模块之间的关联度,一个模块的变化不会影响其他模块的正常运行。下面是一个简单的代码演示: 内聚示例: ```python class Car: def __init__(self, make, model, year): self.make = make self.model = model self.year = year def get_make(self): return self.make def get_model(self): return self.model def get_year(self): return self.year def start_engine(self): print("Engine started") def stop_engine(self): print("Engine stopped") ``` 在这个示例中,`Car` 类具有内聚性,因为它的所有方法都与汽车相关。它包含了汽车的制造商、型号和年份等属性,以及启动和停止引擎的方法。 耦合示例: ```python class Car: def __init__(self, make, model, year): self.make = make self.model = model self.year = year self.engine = Engine() def get_make(self): return self.make def get_model(self): return self.model def get_year(self): return self.year def start_engine(self): self.engine.start() def stop_engine(self): self.engine.stop() class Engine: def start(self): print("Engine started") def stop(self): print("Engine stopped") ``` 在这个示例中,`Car` 类和 `Engine` 类之间具有耦合性。`Car` 类包含了一个 `Engine` 实例,但它并不需要知道 `Engine` 类的实现细节,只需要调用 `start()` 和 `stop()` 方法即可。如果 `Engine` 类的实现发生改变,`Car` 类的代码不会受到影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值