Шаблоны проектирования являются следствием, а не целью. Вы не думаете, сегодня я буду использовать Шаблоны стратегий , вы просто делаете это. На полпути, выполняя третий почти идентичный класс, вы останавливаетесь и используете бумажную записную книжку, чтобы выяснить общий случай и подберите базовый класс, который описывает общий контекст. Вы реорганизуете первые два класса, чтобы быть потомками, и это дает вам проверку реальности и довольно много изменений в вашем базовом классе. Тогда следующие тридцать - прогулка в парке.
Только на следующий день на собрании команды вы экономите каждые тридцать минут скуки, говоря: «Я использовал шаблон стратегии. Все они работают одинаково, поэтому есть только одна тестовая программа, для изменения которой требуется параметры».
Близкое знакомство с шаблонами заставляет их рефлексивно использовать их, когда того требует ситуация. Когда люди рассматривают использование шаблонов как самоцель, вы получаете неуклюжий, уродливый код, который говорит скорее о механизме, чем о цели; как, а не как.
Большинство шаблонов решают повторяющиеся фундаментальные проблемы, такие как снижение сложности и необходимость предоставления точек расширяемости. Предоставление точек расширения, когда ясно, что они не понадобятся, бессмысленно усложняет ваш код и создает больше точек отказа и контрольных примеров. Если вы не создаете структуру для выпуска в дикую природу, решайте только те проблемы, с которыми вы действительно сталкиваетесь.