По моему мнению, если вы используете делегатов, то на самом деле вы не реализуете шаблон Стратегия . На самом деле вы реализуете что-то более похожее на Observer pattern . Весь смысл шаблонов проектирования заключается в том, что когда вы говорите: «Я использовал шаблон« Стратегия »», у всех появляется много контекста в том, что вы сделали. Когда вы начинаете говорить что-то вроде «Я использовал шаблон Стратегии, за исключением своих личных изменений», все становится рискованным.
Но, если я понимаю, что вы пытаетесь сказать, одна из приятных вещей в шаблоне Стратегии, которая не так понятна для делегатов, - вы можете иметь иерархию объектов, которые реализуют стратегию.
Допустим, я тестирую какое-то программное обеспечение. Я хочу проверить это с помощью мыши и клавиатуры. Поэтому я реализую шаблон стратегии, чтобы подключить метод интерфейса, который будет использоваться для каждого тестового примера ... чтобы я мог написать тестовый пример один раз и полностью запустить его, используя MouseStrategy и KeyboardStrategy. Оттуда я могу реализовать специализации, такие как MouseExceptForDialogsStrategy, специализация MouseStrategy. Такая иерархия, как ее расширить и переопределить, легко понятна любому, кто знаком с концепциями ООП ... в то время как то, как добиться и расширить то же самое с делегатами, намного сложнее и намного сложнее.
Как и во многих вещах ... вопрос не в том, «можете ли вы это сделать?», А в том, «стоит ли вам это делать?».