首页/开发/代码质量与评审速查/空对象模式 Null Object(行为型惯用法)
设计原则与模式62 条

空对象模式 Null Object(行为型惯用法)

用实现同一接口的「空行为对象」替代空引用:调用方无需层层判空,默认行为集中定义;与《重构》的 Introduce Special Case 一脉相承。

意图以空行为替代 null 判断
收益分支减少、默认语义集中
注意空对象只在「无此对象」语义成立时使用

Java 示例

Java 示例
interface Logger { void log(String msg); }
class NopLogger implements Logger {
    public void log(String msg) { }
}
// 调用方无需 if (logger != null)

易错点

  • 用空对象掩盖真实错误:该失败的分支被静默兜底
  • 空对象携带可变状态:共享空实例被意外修改

数据来源与参考

  • 《重构》第 2 版(Introduce Special Case / Null Object 传统)与《设计模式》相关系谱
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌