Java 空对象模式在没有检查的情况下有意义吗?

Java 空对象模式在没有检查的情况下有意义吗?,java,design-patterns,null,Java,Design Patterns,Null,如果根据,仍然使用对空对象的检查,这仍然是对空对象模式的合法使用,还是已经违反了它 public class Example { private static final Example NULL = new Example(new Object()); public static Example getNull() { return NULL; } private Object member; public Example(Object me

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

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);
      }
   }
}

理想情况下,可以使用
doSomething(示例)
直接调用空对象,而无需检查。但是如果需要这样的检查,那么避免
null
还是有意义的吗?

在我看来,应该使用
null对象模式来避免检查是否缺少值。
Null对象
的职责是在没有可用值的情况下正确操作。例如,如果一个方法处理集合的每个项,而不是在没有可用项的情况下使用
null
,并检查
null
,以避免在每个元素上重复,则将空集合用作
null对象
。这样就不需要实施特殊情况


如果代码检查
null
或引用是
null对象
,那么
null对象模式

在我看来,应该使用
null对象模式
来避免检查是否缺少值。
Null对象
的职责是在没有可用值的情况下正确操作。例如,如果一个方法处理集合的每个项,而不是在没有可用项的情况下使用
null
,并检查
null
,以避免在每个元素上重复,则将空集合用作
null对象
。这样就不需要实施特殊情况


如果代码检查
null
或引用是
null对象
,那么
null对象模式

在我看来,应该使用
null对象模式
来避免检查是否缺少值。
Null对象
的职责是在没有可用值的情况下正确操作。例如,如果一个方法处理集合的每个项,而不是在没有可用项的情况下使用
null
,并检查
null
,以避免在每个元素上重复,则将空集合用作
null对象
。这样就不需要实施特殊情况


如果代码检查
null
或引用是
null对象
,那么
null对象模式

在我看来,应该使用
null对象模式
来避免检查是否缺少值。
Null对象
的职责是在没有可用值的情况下正确操作。例如,如果一个方法处理集合的每个项,而不是在没有可用项的情况下使用
null
,并检查
null
,以避免在每个元素上重复,则将空集合用作
null对象
。这样就不需要实施特殊情况


如果您的代码检查
null
或引用是
null对象
,那么
null对象模式不会给您带来任何好处

我认为检查null是有效的,只要它很少发生。如果检查是系统性的,那么您显然得不到任何好处,但是有必要对某些特定的情况进行检查

在您的示例中,使用该模式将导致以下代码:

public class Manager {
   public operation(Example example) {
           example.doSomething(example); // does nothing when example is the Null Object
   }
}

但是由于
doSomething
不是对象的方法,因此可能需要进行检查(当然,这取决于此方法的作用)。

我认为检查Null是有效的,只要它很少发生。如果检查是系统性的,那么您显然得不到任何好处,但是有必要对某些特定的情况进行检查

在您的示例中,使用该模式将导致以下代码:

public class Manager {
   public operation(Example example) {
           example.doSomething(example); // does nothing when example is the Null Object
   }
}

但是由于
doSomething
不是对象的方法,因此可能需要进行检查(当然,这取决于此方法的作用)。

我认为检查Null是有效的,只要它很少发生。如果检查是系统性的,那么您显然得不到任何好处,但是有必要对某些特定的情况进行检查

在您的示例中,使用该模式将导致以下代码:

public class Manager {
   public operation(Example example) {
           example.doSomething(example); // does nothing when example is the Null Object
   }
}

但是由于
doSomething
不是对象的方法,因此可能需要进行检查(当然,这取决于此方法的作用)。

我认为检查Null是有效的,只要它很少发生。如果检查是系统性的,那么您显然得不到任何好处,但是有必要对某些特定的情况进行检查

在您的示例中,使用该模式将导致以下代码:

public class Manager {
   public operation(Example example) {
           example.doSomething(example); // does nothing when example is the Null Object
   }
}

但是由于
doSomething
不是对象的方法,因此可能需要进行检查(当然,这取决于此方法的作用)。

作为API发布的
public
façade方法应该检查非空参数;如果其中一个为null,并且您为其设想了null对象模式,那么这些方法应该将其替换为null对象实例(可以作为“默认情况”)并将其转发给后端方法,因此后端方法不需要进行该检查。

作为API发布的
public
façade方法,应检查非空参数;如果其中一个为null,并且您为其设想了null对象模式,那么这些方法应该将其替换为null对象实例(可以作为“默认情况”)并将其转发给后端方法,因此后端方法不需要进行该检查。

作为API发布的
public
façade方法,应检查非空参数;如果其中一个为null,并且您为其设想了null对象模式,那么