やってJavaの悪い習慣:新...().doSomething()?

ItFreak:

私はちょうど1つの方法だけでいくつかのクラスを持っていたコードの一部を見ました。私は例を選びました:

public class TempDirCleanupProcess {
  public void cleanup(final File directory) {} 
}

その後、後で上のコードでメソッドを次のように呼ばれていました。

new TempDirCleanupProcess().cleanup(tempDir);

これは私が前にのみ、静的メソッドで、このような「行動」を見てきましたので、悪い習慣である場合今私は疑問に思って。その上の任意のoppinions?

アンドリューTobilko:

確かに、それは静的メソッドを持つクラスにリファクタリングすることができます。これは、インスタンスを一メソッドを呼び出す必要があるたびに作成するための必要性を取り除くでしょう。与えられない追加のコンテキストを使用してこの特定のケースでは、静的メソッドは、よりよいソリューションであろう。

しかし、クラスが状態を保持することができます忘れないでくださいと、単一の方法は、その状態を変更し、現在のオブジェクトへの参照を返すことがあります。

public class Builder {
  // state

  public Builder buildPart(T part) { 
      // update the state
      return this;
  } 

}

これは、Builderパターンの変化に似ていると意味をなさないと思います。

return new Builder();
return new Builder().buildPart(partA);
return new Builder().buildPart(partA).buildPart(partB);

また、私は考えることができ、非常に貧弱なデザインthisから漏れ出すことになるcleanupので、それへの参照がnew TempDirCleanupProcess()行が実行された後に失われることはありません。

おすすめ

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