在java中,我们更喜欢null object
模式而不是在所有引用中使用非空检查来混乱代码。最近我们遇到了一个null object
通过保留singleton
对象来使用的问题。
假设我们有Person
如下类
public class Person {
public String firstName;
public String lastName;
public boolean isNull() {
return false;
}
public static final Person NULL = new Person() {
public boolean isNull() { return true; }
}
}
在这种情况下,尽管我已将NULL
object 声明为 final,但我仍然可以修改成员变量及其全局可用。
Person nullRef = Person.NULL;
Person.NULL.firstName = "sample";
System.out.println(nullRef.firstName);
在这种情况下,它只有三个字段,我可以通过覆盖这三个 getter 方法来解决可变性问题。但实际上会有很多字段很难覆盖所有相应的 getter 方法。
是否有任何标准模式或策略来解决NULL
对象中的这种可变性问题?