ということで、まとめます。
そのパターンはStatic Factory Methodと呼ばれ、たとえばここで説明されています: How to use "Static factory Methods" instead of constructors?
最も単純な形式では、次のようになります。
class A {
public static A newA() {
return new A();
}
private A(){}
}
コンストラクターを呼び出すための計算パラメーターが含まれているため、例はもう少し複雑です
public class A {
private A(int param1, String param2) {}
public static A createFromCursor(Cursor c) {
// calculate param1 and param2 from cursor
return new A(param1, param2);
}
}
新しいオブジェクトを作成するためにこのような方法を使用する目的は、直接呼び出す前に毎回計算を繰り返す必要がある場合がありますnew A(params)
。つまり、繰り返しを避けるだけであり、これを実現する最も簡単な方法はメソッドを作成することです。
さらに、同じ方法を使用して、作成するためのさらに多くのオプションを提供できますnew A
。たとえば、計算方法を次のように変更できます。
public static A createFromCursorDifferently(Cursor c) {
// calculate param1 and param2 from cursor in different way
return new A(param1, param2);
}
次に、このメソッドに同じパラメーターを渡すと、結果が異なります (メソッド名が異なるため)。
もちろんnew A
、以前と同じコンストラクターを使用して、他のパラメーターから作成することもできます。
public static A createFromObject(Object o) {
// calculate param1 and param2 from object
return new A(param1, param2);
}
したがって、コンストラクタのみを単純に使用するよりも、静的ファクトリ メソッドを使用すると、はるかに多くの可能性があります。