Harke:
私は最近、この種のコードに出くわしました:
final class OnlyMe {
private int a;
private int b;
//setter and getters for a and b.
private OnlyMe(){}
public static OnlyMe getOnlyMeObj(int c) {
// use c value to connect to database
// to populate a and b
if(rs.next()) {
OnlyMe onlyMe = new OnlyMe();
onlyMe.a = rs.getInt(1);
onlyMe.b = rs.getInt(2);
return onlyMe;
}
// return null for everything else.
// assume the code is under try-catch block.
return null;
}
「getOnlyMeObj(int型)」は別のクラスに出て抽出することができようなので、そのらしいです。開発者はこのクラスだけでそのメソッドへの入力に応じて、その方法によって作成されたかったようしかし、それはそうです。
その理由は何でしょうか?
これは、パターンやアンチパターンのいくつかの種類やパターンのないですか?
よりよい解決策はありますか?
ルイアルパド:
これは、静的なファクトリパターンです。アイデアは、静的(クラスレベル)メソッドを介してオブジェクトのインスタンスを作成し、それを返すことです。このパターンのいくつかの可能な用途があります。
- そこにいくつかの可能なコンストラクタであるかもしれないと、新しいインスタンスは、コンストラクタを選択する必要なコードをさせる避けたいと思うかもしれません
- 複数の工場がある場合は、混乱は彼らの命名により減少させることができます
- あなたには、いくつかのパラメータを検証するオプションを持って、彼らが有効である場合にのみ、インスタンス化し、この方法
- あなたは、必ずしもサブクラスを返すことがあります工場、ないための最善のこと、まだ選択肢を持つことができます