Шаблон дизайна Стратегии часто рассматриваются в качестве замены для функций первого класса на языках , которые не имеют их.
Например, скажем, вы хотели передать функциональность в объект. В Java вам нужно передать объекту другой объект, который инкапсулирует желаемое поведение. В таком языке, как Ruby, вы просто передаете функциональность в виде анонимной функции.
Однако я думал об этом и решил, что, возможно, стратегия предлагает больше, чем просто анонимная функция.
Это связано с тем, что объект может содержать состояние, которое существует независимо от периода, когда выполняется его метод. Однако анонимная функция сама по себе может содержать состояние, которое перестает существовать в тот момент, когда функция завершает выполнение.
В объектно-ориентированном языке, который поддерживает первоклассные функции, имеет ли шаблон стратегии какое-либо преимущество перед использованием функций?