首页/开发/代码质量与评审速查/手法:Introduce Special Case(引入特例)
重构手法62 条

手法:Introduce Special Case(引入特例)

为「特殊值」(未知客户、缺失配置)建立可复用对象:把判空与兜底逻辑收进特例对象,消除调用方的重复条件判断;空对象模式是它的常见形态。

场景到处判 null/缺省值、默认行为重复
形态Null Object、Unknown Customer
收益调用方不再遍地形如 if (x == null)

Java 示例

Java 示例
class UnknownCustomer implements Customer {
    public String name() { return "occupant"; }
    public BillingPlan plan() { return BillingPlan.basic(); }
}

易错点

  • 特例对象被当普通对象修改:共享实例被意外改坏
  • 用特例吞掉真实错误:该报错的分支被静默兜底

数据来源与参考

  • 《重构》第 2 版 · 第 10 章(Introduce Special Case)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌