Je ne suis pas sur de comprendre l'explication de artragis (c'est quoi ce code tout moche ? On dirait du Java… ), du coup, je donne mon avis.
Le Strategy n'est pas simplement la délégation ou le dispatching, mais le comportement paramétrable (mon lmghs préféré parlerait de point de variation).
Pour garder un exemple "routier", imagine que tu conduis une voiture. Pour cela, tu utilises un algorithme "conduire", qui te permet de décider comment tu accélères, comment tu ralenties, comment tu tournes, comment tu freines, etc.
Mais en fait, ton algorithme "conduire" ne sera pas toujours le même. Par exemple, quand il pleut, tu utiliseras l'algorithme "conduire prudemment". Quand tu seras ivre, ça sera l'algorithme "conduire sans les mains". Et quand tu croiseras un voiture de police, ça sera l'algorithme "conduire avec un grand sourire".
L'algorithme "conduire" peut donc changer au cours du temps, même si ça sera toujours un algorithme "conduire". En termes de POO, pour faire cela, on place les algorithmes dans des objets et en affectant un objet-algo à un objet paramétrable, on peut changer le comportement de cet objet. Chaque algo spécialisé est implémenté dans une classe dérivée de la classe "conduire" et la classe paramétrable prend un objet-alog en paramètre, qu'elle va utiliser comme si c'était un objet "conduire" (et donc sans avoir besoin de savoir quel est le type réel de l'objet-algo).