Я думаю, что здесь есть три фактора.
Недостаток критической массы
Во-первых, шаблон - это немного больше, чем присвоение имени некоторому коду, который реализует определенный «кусок» функциональности. Единственный способ, которым имя обеспечивает большую реальную ценность, - это если вы можете зависеть от того, что все знают, что означает это имя, поэтому, просто используя имя, они сразу же многое поймут о коде.
Образцы никогда не устанавливали критическую массу, в которой они нуждались, чтобы достигнуть этого все же. Скорее наоборот, AAMOF. За 20 (или около того) лет, с тех пор как вышла книга GoF, я почти уверен, что не видел столько дюжин разговоров, в которых каждый вовлеченный действительно знал достаточно шаблонов дизайна для их использования для улучшения коммуникации.
Короче говоря, шаблоны проектирования потерпели неудачу именно потому, что они потерпели неудачу.
Слишком много паттернов
Я думаю, что вторым важным фактором является то, что, во всяком случае, они изначально назвали слишком много шаблонов. В большинстве случаев различия между шаблонами являются достаточно тонкими, поэтому практически невозможно точно сказать, соответствует ли тот или иной класс тому или иному шаблону (или, возможно, обоим - или, возможно, ни одному).
Предполагалось, что вы сможете говорить о коде на более высоком уровне. Вы сможете пометить довольно большой кусок кода как реализацию определенного шаблона. Просто используя это заранее определенное имя, все слушатели, как правило, знают столько, сколько заботятся об этом коде, чтобы вы могли перейти к следующему.
Реальность имеет тенденцию быть почти противоположным. Допустим, вы находитесь на собрании и скажите им, что этот конкретный класс является Фасадом. Половина людей на собрании либо никогда не знали, либо давно забыли, что именно это означает. Один из них просит вас напомнить ему о точной разнице (ях) между Фасадом и, скажем, Прокси. Да, и пара людей, которые действительно знают шаблоны, проводят оставшуюся часть собрания, обсуждая, действительно ли это следует считать Фасадом или «просто» Адаптером (при этом один парень все еще настаивал на том, что для него это похоже на Прокси).
Учитывая, что ваше намерение было просто сказать: «этот код не очень интересен; давайте двигаться дальше», пытаясь использовать имя шаблона только для отвлечения внимания, а не значения.
Отсутствие интереса
Большинство шаблонов проектирования на самом деле не имеют дело с интересными частями кода. Они имеют дело с такими вещами, как: «как мне создать эти объекты?» И «как мне заставить этот объект общаться с этим?» Запоминание названий шаблонов для них (а также вышеупомянутых аргументов в отношении деталей и тому подобного) просто придает много энергии вещам, о которых большинство программистов просто не заботятся.
Говоря немного по-другому: шаблоны имеют дело с тем же, что и во многих программах, но что действительно делает программу интересной, так это то, как она отличается от других программ.
Резюме
Разработка шаблонов не удалась, потому что:
- Им не удалось достичь критической массы.
- Различия между шаблонами было недостаточно, чтобы гарантировать ясность.
- Они в основном имели дело с частями кода, которые практически никого не волновали.