Дійсно є дві різні, істотні причини існування шаблонів.
Перше вже було пояснено досить добре: використання шаблонів змащує комунікацію між розробниками. Якщо ви і я обидва розумієте, що кажучи "спостерігач", я кажу про дуже специфічну структуру коду, я можу дуже швидко описати, як працює біт коду, який використовує цей шаблон. Альтернативою є повне опис рішення, яке займає багато часу і схильне до помилок. ("Ну, я створив цей чистий віртуальний клас, який описує та інтерфейс для споживчих об'єктів, а потім я створив клас, який підтримує список активних споживачів, які ...")
Друга перевага шаблонів полягає в тому, що вони є позачерговими формами рішення для поширених форм проблем. Якщо ви знаєте свої шаблони, і, наприклад, ви стикаєтеся з проблемою, коли вам потрібно знайти хороший спосіб отримати інформацію від (можливо, декількох) об'єктів виробника до кількох споживчих об'єктів, не вводячи зайве з'єднання між класами, ви розпізнаєте "це це робота для спостерігача! " і ви відразу дізнаєтесь, як вирішити свою проблему.
Ці переваги також дійсно підсилюють один одного. Вони дозволяють швидко вирішити певні загальні класи проблеми, і тоді, коли ви закінчите, ви можете дуже швидко повідомити, як ви вирішили проблему.
Порівнюйте це зі світом, де шаблони "не існують". Ви стикаєтесь з одним із цих класів проблем, які, як правило, не є тривіальними дизайнерськими проблемами, і витрачаєте неабияку кількість часу, придумуючи хороше рішення (яке, до речі, буде дуже схоже на відповідний зразок). Потім ваш колега підходить і хоче дізнатися, як ви це вирішили, і ви витрачаєте годину, обговорюючи, як і чому.
Це все пов’язано із застереженням, який повинен здатися досить очевидним: не намагайтеся створювати проблеми у шаблонах, які не підходять. Якщо модель не відповідає проблемі, то рішення в кінцевому підсумку буде викривленим, і ви втратите користь для зменшення зусиль. Крім того, оскільки ваша робота більше не відповідає розумінню вашими колегами значення цього шаблону, ви втратите вартість комунікаційної вигоди. Насправді ви, швидше за все, збільшите витрати на комунікацію понад вартість без шаблонів, оскільки неправильне використання шаблону дасть вашим колегам хибного розуміння рішення, що гірше, ніж взагалі ніякого розуміння.