Realmente hay dos razones diferentes y sustanciales para la existencia de patrones.
El primero ya se ha explicado bastante bien: el uso de patrones lubrica la comunicación entre los desarrolladores. Si usted y yo entendemos que cuando digo 'Observador' estoy hablando de una estructura de código muy específica, entonces puedo describir muy rápidamente cómo funciona un fragmento de código que usa ese patrón. La alternativa es describir completamente la solución, que lleva mucho tiempo y es propensa a errores. ("Bueno, creé esta clase virtual pura que describe e interactúa para objetos de consumo, y luego creé una clase que mantiene una lista de consumidores activos, que ...")
El segundo beneficio de los patrones es que son formas de solución estándar para formas de problemas comunes. Si conoce sus patrones y, por ejemplo, encuentra un problema en el que necesita encontrar una buena manera de obtener información de (posiblemente múltiples) objetos productores a múltiples objetos consumidores, sin introducir un acoplamiento innecesario entre clases, reconocerá "esto es un trabajo para un observador! " e inmediatamente sabrá cómo resolver su problema.
Estos beneficios también se refuerzan mutuamente. Le permiten resolver rápidamente ciertas clases comunes de problemas, y luego, cuando haya terminado, puede comunicar rápidamente cómo resolvió el problema.
Contrasta esto con un mundo donde los patrones "no existen". Te encuentras con una de estas clases de problemas, que generalmente no son problemas de diseño triviales, y pasas bastante tiempo buscando una buena solución (que, por cierto, es muy probable que se parezca mucho al patrón apropiado). Entonces, su compañero de trabajo aparece y quiere saber cómo lo resolvió, y pasa una hora discutiendo cómo y por qué.
Todo esto está asociado con una advertencia que debería parecer bastante obvia: no intente forzar problemas en patrones que no encajan. Si el patrón no encaja con el problema, entonces la solución terminará siendo complicada y perderá el beneficio de reducción de esfuerzo de los patrones. Además, dado que su trabajo ya no se ajustará a la comprensión de sus compañeros de trabajo sobre el significado del patrón, perderá el costo del beneficio de comunicación. De hecho, es probable que aumente el costo de la comunicación más allá del costo sin patrones, porque el mal uso del patrón le dará a sus compañeros de trabajo una falsa comprensión de la solución, lo cual es peor que no tener ninguna comprensión.