これは、「問題が発生している」というよりも、スタイルに関する質問です。ヌルプレースホルダーオブジェクトの場合(私は正しい用語を使用していますか?)、一般的にシングルトンパターンを使用することが好ましいですか?説明を簡単にするために、次に例を示します。
public interface Foo {
void myMethod();
}
public class RealFoo implements Foo {
void myMethod() { /* Do something productive */ }
}
public class MyUniverse {
public static void main(String args[]) {
Foo[] fooArray = new Foo[10];
// do something productive that might result in Null objects in the array
for (Foo f : fooArray) {
f.myMethod(); // I DONT WANT TO DO if (f != null) blah blah
}
}
}
さて、それが私のシナリオです。AとBのどちらを実行するのが好ましいですか?
// A
public class NullFoo implements Foo {
public NullFoo() {}
public void myMethod() { /* don't need to do anything */ }
}
// B
public class NullFoo implements Foo {
private static NullFoo _instance = null;
protected NullFoo() {}
public static NullFoo getInstance() {
if (_instance == null) _instance = new NullFoo();
return _instance;
}
public void myMethod() { /* don't need to do anything */ }
}
ありがとう!Bはほとんどの場合優れているという私の本能ですが、何かが足りないかもしれないので、私は尋ねます...