私はウィキペディア、特にC ++サンプルでこの説明を見てきましたが、3つのクラスを定義し、インスタンスを作成して呼び出すことと、その例との違いを認識できていません。私が見たのは、他の2つのクラスをプロセスに配置しただけで、どこにメリットがあるのかわかりません。今、私は明らかな何か(木のための木材)が欠けていると確信しています-誰かが決定的な実世界の例を使用してそれを説明できますか?
これまでの回答から私ができることは、これを行うためのより複雑な方法のように思えます。
have an abstract class: MoveAlong with a virtual method: DoIt()
have class Car inherit from MoveAlong,
implementing DoIt() { ..start-car-and-drive..}
have class HorseCart inherit from MoveAlong,
implementing DoIt() { ..hit-horse..}
have class Bicycle inherit from MoveAlong,
implementing DoIt() { ..pedal..}
now I can call any function taking MoveAlong as parm
passing any of the three classes and call DoIt
Isn't this what Strategy intents? (just simpler?)
[編集-更新]上記で参照した関数は、MoveAlongがこの新しいクラスに実装されたアルゴリズムに基づいて必要に応じて設定される属性となる別のクラスに置き換えられます。(受け入れられた回答に示されているものと同様です。)
[編集-更新]結論
ストラテジーパターンには用途がありますが、私はKISSを強く信じており、より単純でわかりにくい手法になる傾向があります。主に、保守が容易なコードを渡したいので(そして、変更を加えなければならないのはおそらく私です!)。