java - 仅在没有检查的情况下,空对象模式是否有意义?

标签 java design-patterns null

如果仍然根据null object pattern检查空对象,这仍然是空对象模式的合法使用还是已经违反了它?

public class Example {

   private static final Example NULL = new Example(new Object());

   public static Example getNull() {
       return NULL;
   }

   private Object member;

   public Example(Object member) {
       this.member = member;
   }
}

public class Manager {
   public operation(Example example) {
      if(Example.getNull().equals(example) == false) {
          doSomething(example);
      }
   }
}

理想情况下,应该有一个 null 对象,可以直接使用 doSomething(example) 调用而无需检查。但如果需要这样的检查,那么完全避免 null 是否仍然有意义?

最佳答案

在我看来,应该使用空对象模式来避免检查值是否不存在。 空对象的职责是在没有可用值的情况下正确运行。例如,如果一个方法处理集合中的每个项目,则在没有可用项目时不要使用 null 并检查 null 以避免对每个元素进行迭代,而是使用空集合作为空对象。这样就无需实现特殊情况。

如果您的代码检查 null 或引用是 Null 对象,则您不会从 Null 对象模式中获得任何好处.

关于java - 仅在没有检查的情况下,空对象模式是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22351409/

相关文章:

java - Android谷歌地图如何用fillColor绘制复杂的多边形

c# - 工作单元模式——管理父子关系

c# - 抽象基类/派生类的空合并问题

c# - 使用异常而不是冗长的空检查是否可以接受?

java - 如何定义Map,key是day,value是list

java - 匹配单词的变体(拼写错误、leetspeak)

java - 设置 JOptionPane 中字符串值的格式

c# - 我如何在C#中模拟匿名类

c++ - 单例模式与依赖注入(inject)的关系

c# - 在 IL 中对空引用调用实例方法