いくつかの作業を実行する util クラスがあります。明らかに、拡張のために閉じられており、すべてのメソッドは静的です。簡単にするために、クラスは次のようになります。
public final class Util {
private Util() { }
public static void doWork() {
// some work
int variable = help();
// some work uses variable
}
private static int help() {
// some helper functionality
}
}
クラスにdoWork
は、多くの計算を実行するメソッドがあります。ところで、メソッドはヘルパー メソッドhelp
を呼び出して何らかの結果を取得し、残りのコードはhelp
メソッドによって返された結果を使用します。
ここで、クライアント コードで method の機能を再利用したいのですdoWork
が、呼び出す代わりにmethodhelp
を呼び出したいと思いますhelp2
。最も簡単な解決策doWork2
は、に置き換えhelp
てメソッドを作成するだけhelp2
です。
doWork
のすべての変更はいずれかで複製する必要があるため、これは非常に悪いアプローチdoWork2
です。これはパターンに非常に似てTemplate Method
いますが、ここには拡張機能がないため、適用できません。
このメソッドにパラメーターを追加するために思いついた最善の解決策ですが、既存のすべてのユーザーを保持しますdoWork
。
public static void doWork() {
doWorkWithParameter(true);
}
public static void doWorkWithParameter(boolean helpOrHelp2) {
// some work
int variable = helpOrHelp2 ? help() : help2();
// some work uses variable
}
この問題を解決するために適用できるより良い設計ソリューションは何ですか? 持っているような柔軟性を実現する方法はありTemplate Pattern
ますが、util クラスへの適用にはありますか。
前もって感謝します。