《左耳听风》 学习笔记 day32

209 阅读2分钟

空对象模式是一种设计模式,它用空对象来取代 NULL 对象的检查。当我们调用一个对象的方法时,如果该对象是一个NULL对象,则会抛出NullPointerException。空对象模式可以避免这种情况发生。 空对象通常是一个与抽象状态相关的对象,但其本身不会做任何事情。空对象会覆盖抽象状态对象中的所有方法,但方法体为空。由于空对象实现了状态对象的接口,所以客户端代码可以调用空对象的方法,而不会抛出NullPointerException。

空对象模式有如下优点:

  1. 避免NullPointerException异常。使用空对象模式可以避免我们频繁检查对象是否为null。
  2. 简化客户端代码。客户端不需要再针对null对象写额外的检查逻辑,可以直接调用方法。
  3. 与空值更清晰的语义。空对象的名称更清晰地表达了语义,比null更有表现力。 但是空对象模式也有一定的缺点:
  4. 额外创建的对象会占用更多内存。虽然对象为空,但也需要占用一定空间。
  5. 额外的逻辑判断。需要判断是否使用空对象,增加了逻辑的复杂度。
  6. 不易调试。空对象本身不会有任何行为,更难以调试。 空对象模式的实现步骤:
  7. 定义一个抽象状态的接口或抽象类。
  8. 定义空对象类,它实现抽象状态接口,但方法体为空。
  9. 在上下文中判断,如果状态对象为null,则使用空对象进行替代。
  10. 客户端通过状态对象接口调用方法,无需再检查null,因为空对象已经替代了null对象。

空对象模式是一个很简单却很实用的设计模式。它可以有效避免一些空指针异常,同时也可以简化客户端代码,提高可读性。但是在使用时,我们也需要权衡其带来的额外开销,适当运用。总的来说,空对象模式是一种很实用简单的设计模式,值得在我们的项目中推广运用。

此文章为4月Day26学习笔记,内容来源于极客时间《左耳听风》 这门课真的非常好,推荐大家看看