を必要interface Algorithm
戦略パターンの助けが
class MathAlgorythm implements Algorithm
(returns MathResult, which implements Result
が存在するとされている)
class ChemitryAlgorythm implements Algorithm
(returns ChemitryResult, which implements Result
が存在する)
さらに、これらのALGOSにデータを渡すために使用されContext class
は、そこに存在します。データは次のように渡されます。
public Result executeStrategy(Data data) {
return algo.execute(data);
}
は、私は右のタイプ結果の何かを得る私は、executeStrategyを想定し、バック return MathAlgorithm.execute(data);
を取得しますか?
私はその後、実行 return ChemitryAlgorithm.execute(data);
は再び私は何かの結果を得る
質問: 結果はインタフェースです。私はMathResultやChemistryResultのような具象クラスの実装にアクセスする必要があります。言い換えると。 Result型のものが得られたら、深く掘り下げてインターフェイスの背後に隠れているクラスを知る必要があります
私はこの散歩があまり混乱しないことを望みます。あなたは具体的な実装が実装しなければならないT get()
ような方法は、あなたが具体的な実装について知る必要はありませんResult
を与える場合
それはで、道 'algorithm'によってです「私」。 – BalusC
戦略は通常、異なるアルゴリズムを使用して(本質的に)同じ結果を与える場合に使用されます。だから、より良い例は、異なる戦略がSteepestDescentsまたはConjugateGradientsであるオプティマイザです。数学と化学を代替ストラテジーと見なすことは困難です。 (これが必要なすべての場合、結果に戦略クラスのフィールドがある可能性があります) –
あなたは正しいです。ここでの挑戦はまったく同じです - 同じ傘の下で異なる結果をグループ化してください。数学と化学の両方が同じ物を返すなら、問題はなかったでしょう。私はgoogleのオプティマイザ今 – JAM