首页/开发/代码质量与评审速查/SOLID 落地:用策略模式实现开闭
设计原则与模式62 条

SOLID 落地:用策略模式实现开闭

把「新增类型要改调用方」改造为「新增类型只加实现」:以折扣计算为例,策略接口 + 工厂/注册表把分支集中到组装点,业务主流程保持不变。

改造对象按客户等级 switch 计算折扣
手法策略接口 + 实现类 + 注册表装配
验收新增等级零修改主流程

策略与装配

策略与装配
interface DiscountPolicy { Money apply(Order o); }
class VipPolicy implements DiscountPolicy { ... }
class NewUserPolicy implements DiscountPolicy { ... }

Map<Tier, DiscountPolicy> registry = Map.of(
    Tier.VIP, new VipPolicy(),
    Tier.NEW, new NewUserPolicy());

易错点

  • 注册表分散在多处:装配点要唯一,否则又出现新的修改面
  • 策略接口只有方法签名:缺少输入校验约定,实现参差

数据来源与参考

  • 《重构》第 2 版(Replace Conditional with Polymorphism)与 OCP 结合实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌