如果仍然根据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/