迪米特法则(最少知识原则):违例与修复示例

副标题 / 摘要 迪米特法则强调“只和直接朋友说话”。本文用示例说明违规写法,并给出修复方式。 目标读者 想降低耦合的工程师 负责代码评审与重构的开发者 需要维护大型系统的团队 背景 / 动机 深层链式调用让对象之间依赖过强,改动一个结构就影响一大片。 迪米特法则就是用来控制这种耦合的。 核心概念 最少知识原则:对象只了解直接依赖 消息委托:把内部结构封装在对象内 耦合控制:减少“链式访问” 实践指南 / 步骤 识别链式调用(a.b.c.d) 让中间对象提供必要方法 封装内部结构 避免跨层访问内部字段 可运行示例 class Wallet: def __init__(self, balance): self.balance = balance def has_enough(self, amount): return self.balance >= amount class User: def __init__(self, wallet): self.wallet = wallet def can_pay(self, amount): return self.wallet.has_enough(amount) def checkout(user, amount): # 违例:user.wallet.balance # 修复:user.can_pay return user.can_pay(amount) 解释与原理 通过让 User 暴露 can_pay 方法,调用方无需知道 wallet 的内部结构。 这样 wallet 内部变化时,调用方不需要改动。 ...

2026年1月24日 · 1 分钟 · map[name:Jeanphilo]