У шаблона проектирования есть два аспекта: разделение обязанностей с целью улучшения структуры программы, обеспечения гибкости и упрощения обслуживания.И специфичный для языка набор конструкций для реализации этого шаблона.В некоторых случаях мы дополняем естественные возможности языка хитрым дизайном.
Шаблон стратегии описан здесь как
Определите семейство алгоритмов, инкапсулируйте каждыйи сделать их взаимозаменяемыми.Стратегия позволяет алгоритму варьироваться независимо от клиентов, которые его используют.
Теперь эта цель разработки отделения клиентов от особенностей реализации, безусловно, применима как к динамическим, так и к статическим языкам.
Детали различаются, потому что статические языки побуждают нас объявлять явные интерфейсы и кодировать клиентов для использования интерфейсов, в то время как динамические языки могут использовать «Duck Typing», но кодирование для работы с львами-получателями там, где ожидаются утки.(animal-> eat () ... нет, нет! не ешьте меня!)
Я ожидаю увидеть примеры большинства шаблонов проектирования в динамическом коде, которые, возможно, представлены по-разному - такое же разделение проблем по-прежнемуважно.