Я считаю метод мышления Net Objectives о скороговорках наиболее полезным. Люди, читающие книгу GoF слишком часто, начинают предполагать, что структуры, которые они показывают, в нотации дизайна и в коде, являются шаблонами, и что они всегда так выглядят. Есть другой, возможно, лучший способ взглянуть на это.
Шаблоны - это наборы похожих задач, которые можно решить с помощью определенных абстрактных формул, а не наборов формул, которые можно использовать для решения различных задач. Это означает, что шаблон уже существует до того, как вы начнете пытаться сделать дизайн, тогда цель дизайнера - найти его , а не навязать его.
Кроме того, многие люди смотрят на шаблоны и говорят: «О, я просто решил это ... Я не использовал никаких глупых шаблонов». Дело в том, что «....» почти неизбежно описывает реализацию данного шаблона. Например, массив указателей на функции может служить Цепью ответственности, даже если это не то, на что похож традиционный рецепт.
Имея это в виду, внимание при изучении шаблонов должно быть сосредоточено на проблемах, а не на шаблонах. Узнайте мотивирующие факторы моделей и как они решают эти факторы. Это позволит вам увидеть закономерности в проблеме, а затем просто указать на них. Это, наряду с языком, который шаблоны дают нам для того, чтобы говорить о дизайне, позволяет вам раскрыть дизайн, подходящий для решения различных трудностей, с которыми вы сталкиваетесь в настоящее время.
ДА, короче говоря, шаблоны обучения не только того стоят ... вы ограничиваете себя, НЕ изучая их. Я не хочу описывать все мотивирующие принципы и общую форму решения, когда я говорю: «Выглядит как посетитель для меня».
Вот их сайт: http://www.netobjectives.com/PatternRepository/index.php?title=Main_Page