Когда использовать шаблонный метод Vs. Стратегия? - PullRequest
26 голосов
/ 23 марта 2009

Шаблон шаблонного метода и шаблон стратегии делают примерно одно и то же. Я понимаю основные различия между ними (шаблонный метод основан на наследовании, стратегия основана на композиции), но есть ли достойные рекомендации о том, когда выбирать один из других? Кажется, что они делают в основном то же самое.

Ответы [ 11 ]

0 голосов
/ 01 октября 2013

Я бы почти всегда использовал стратегию по очень важной причине, по которой клиентский код не зависит от реализации, тогда как в шаблонной части часть реализации остается в абстрактном классе, и любое изменение в абстрактном классе может потребовать изменения клиента, который очень часто В результате получается жесткий код, и в итоге разработчик говорит, что «это оказалось большим изменением, чем я ожидал».

Но в тех случаях, когда действительно полезно получить общий код в абстрактном классе, я, не колеблясь, сделаю это, а также постараюсь сохранить от него код, связанный с клиентским кодом

...