Istnieją naprawdę dwa różne, istotne powody istnienia wzorów.
Pierwszy został już dość dobrze wyjaśniony: użycie wzorców smaruje komunikację między programistami. Jeśli oboje rozumiemy, że kiedy mówię „Obserwator”, mówię o bardzo specyficznej strukturze kodu, to mogę bardzo szybko opisać, jak działa kawałek kodu, który używa tego wzorca. Alternatywą jest pełne opisanie rozwiązania, które jest czasochłonne i podatne na błędy. („Cóż, stworzyłem tę czystą klasę wirtualną, która opisuje i interfejs dla obiektów konsumenckich, a następnie stworzyłem klasę, która utrzymuje listę aktywnych konsumentów, która ...”)
Drugą zaletą wzorców jest to, że są one gotowymi formami rozwiązań typowych problemów. Jeśli znasz swoje wzorce i na przykład napotkasz problem, w którym musisz znaleźć dobry sposób na uzyskanie informacji od (prawdopodobnie wielu) obiektów producenta do wielu obiektów konsumpcyjnych, bez wprowadzania niepotrzebnego łączenia między klasami, rozpoznasz „to to praca dla obserwatora! ” i od razu będziesz wiedział, jak rozwiązać problem.
Korzyści te również naprawdę się wzmacniają. Pozwalają one szybko rozwiązać niektóre typowe klasy problemów, a po zakończeniu można bardzo szybko komunikować, w jaki sposób rozwiązano problem.
Porównaj to ze światem, w którym wzory „nie istnieją”. Wpadasz na jedną z tych klas problemów, które na ogół nie są trywialnymi problemami projektowymi, i spędzasz sporo czasu na wymyślaniu dobrego rozwiązania (które, nawiasem mówiąc, bardzo prawdopodobnie będzie wyglądać podobnie do odpowiedniego wzorca). Następnie pojawia się twój współpracownik i chce wiedzieć, jak go rozwiązać, i spędzasz godzinę na omawianiu tego, jak i dlaczego.
Wszystko to wiąże się z zastrzeżeniem, które powinno wydawać się dość oczywiste: nie próbuj wrzucać problemów we wzorce, które nie pasują. Jeśli wzorzec nie pasuje do problemu, rozwiązanie skończy się zawiłością i utracisz korzyści wynikające ze zmniejszenia nakładów wynikające z wzorców. Dodatkowo, ponieważ twoja praca nie będzie już pasować do zrozumienia przez współpracowników znaczenia wzoru, stracisz koszty korzyści komunikacyjnych. W rzeczywistości prawdopodobnie zwiększysz koszt komunikacji ponad koszt braku wzorców, ponieważ niewłaściwe użycie tego schematu da twojemu współpracownikowi fałszywe zrozumienie rozwiązania, co jest gorsze niż brak zrozumienia.