アルゴリズムの概要があります。特定の順序で実行する必要があるいくつかの論理ステップです。アルゴリズムの結果は何らかの数値でなければなりません。当然、これはテンプレート メソッド パターンを使用するというアイデアにつながりました。これはvoid
メソッドでは問題なく機能しますが、ここで問題が発生します。アルゴリズムの各ステップはvoid
メソッドではありませんが、数値を返すことが許可されています (したがって、int
メソッドです)。ステップがゼロ以外の数値を返す場合、この数値はアルゴリズムの実行結果。ゼロの場合、実行は次のステップに進みます。
これは本当に些細なことに聞こえるかもしれませんが、次のようなものを持つのはなんとなく醜いと思います。
public int algorithm() {
int resultStep1 = step1();
if (resultStep1!=0) {
return resultStep1;
}
int resultStep2 = step2();
if (resultStep2!=0) {
return resultStep2;
}
...
}
もちろんstep1()
、step2()
などは抽象メソッドであり、私のものを拡張する対応するクラスに独自の特定の実装があります。
私の頭に浮かんだもう 1 つのアイデアは、例外を使用することでしたが、ここで制御フローについて話しているので、これはアンチパターンになります。
ここに何かが欠けていますか、それともこれは私がそれを書かなければならない方法ですか?