それは、静的メソッドは、それが中に存在するクラスのオブジェクトを作成するための責任が持っている賢明ですか?

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型)」は別のクラスに出て抽出することができようなので、そのらしいです。開発者はこのクラスだけでそのメソッドへの入力に応じて、その方法によって作成されたかったようしかし、それはそうです。

その理由は何でしょうか?

これは、パターンやアンチパターンのいくつかの種類やパターンのないですか?

よりよい解決策はありますか?

ルイアルパド:

これは、静的なファクトリパターンです。アイデアは、静的(クラスレベル)メソッドを介してオブジェクトのインスタンスを作成し、それを返すことです。このパターンのいくつかの可能な用途があります。

  • そこにいくつかの可能なコンストラクタであるかもしれないと、新しいインスタンスは、コンストラクタを選択する必要なコードをさせる避けたいと思うかもしれません
  • 複数の工場がある場合は、混乱は彼らの命名により減少させることができます
  • あなたには、いくつかのパラメータを検証するオプションを持って、彼らが有効である場合にのみ、インスタンス化し、この方法
  • あなたは、必ずしもサブクラスを返すことがあります工場、ないための最善のこと、まだ選択肢を持つことができます

参照:参照:https://www.youtube.com/watch?v=sOpbAOX5nJs

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=221528&siteId=1