Esistono davvero due motivi diversi e sostanziali per l'esistenza di modelli.
Il primo è già stato spiegato abbastanza bene: l'uso di pattern lubrifica la comunicazione tra gli sviluppatori. Se entrambi capiamo che quando dico "Observer" sto parlando di una struttura di codice molto specifica, allora posso descrivere molto rapidamente come funziona un po 'di codice che usa quel modello. L'alternativa è descrivere completamente la soluzione, che richiede molto tempo ed è soggetta a errori. ("Beh, ho creato questa pura classe virtuale che descrive e interfaccia per oggetti di consumo, e quindi ho creato una classe che mantiene un elenco di consumatori attivi, che ...")
Il secondo vantaggio dei modelli è che si tratta di moduli di soluzioni standard per moduli di problemi comuni. Se conosci i tuoi schemi e, ad esempio, incontri un problema in cui devi trovare un buon modo per ottenere informazioni da (possibilmente più) oggetti di produzione a più oggetti di consumo, senza introdurre un accoppiamento non necessario tra le classi, riconoscerai "questo è un lavoro per un osservatore! " e saprai immediatamente come risolvere il tuo problema.
Anche questi vantaggi si rafforzano a vicenda. Ti permettono di risolvere rapidamente alcune classi comuni di problemi, e quando hai finito, puoi comunicare molto rapidamente come hai risolto il problema.
Confrontalo con un mondo in cui i pattern "non esistono". Ti imbatti in una di queste classi di problemi, che in genere non sono problemi di progettazione banali, e passi un bel po 'di tempo a trovare una buona soluzione (che, per inciso, molto probabilmente assomiglierà molto al modello appropriato). Poi, il tuo collaboratore si avvicina e vuole sapere come lo hai risolto, e passi un'ora a discutere del come e del perché.
Questo è tutto associato a un avvertimento che dovrebbe sembrare abbastanza ovvio: non cercare di forzare i problemi in schemi che non si adattano. Se il modello non si adatta al problema, la soluzione finirà per essere contorta e si perderà il beneficio di riduzione dello sforzo dei modelli. Inoltre, poiché il tuo lavoro non si adatta più alla comprensione del significato del modello da parte dei tuoi collaboratori, perderai il costo dei benefici della comunicazione. In effetti, è probabile che aumenterai il costo della comunicazione oltre il costo no-pattern, perché l'uso improprio del modello darà ai tuoi colleghi una falsa comprensione della soluzione, che è peggio di nessuna comprensione.