Vi sono in realtà due ragioni diverse e sostanziali per l'esistenza di schemi.
Il primo è già stato spiegato abbastanza bene: l'uso di modelli lubrifica la comunicazione tra gli sviluppatori. Se entrambi capiamo che quando dico "Osservatore" sto parlando di una struttura di codice molto specifica, allora posso descrivere molto rapidamente come funziona un po 'di codice che utilizza quel modello. L'alternativa è descrivere in modo completo la soluzione, che richiede tempo ed è soggetta a errori. ("Bene, ho creato questa pura classe virtuale che descrive e si interfaccia con gli oggetti di consumo, e poi ho creato una classe che mantiene un elenco di consumatori attivi, che ...")
Il secondo vantaggio dei modelli è che sono moduli di soluzione 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 del produttore 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.
Questi vantaggi si rafforzano davvero a vicenda. Ti consentono di risolvere rapidamente alcune classi comuni di problemi e, quando hai finito, puoi comunicare molto rapidamente come hai risolto il problema.
In contrasto con un mondo in cui i modelli "non esistono". Ti imbatti in una di queste classi di problemi, che in genere non sono banali problemi di progettazione, e passi un bel po 'di tempo a trovare una buona soluzione (che, per inciso, molto probabilmente assomiglierà molto al modello appropriato). Quindi, il tuo collega si avvicina e desidera sapere come l'hai risolto e passi un'ora a discutere di come e perché.
Tutto questo è 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 perderai il beneficio di riduzione dello sforzo dei modelli. Inoltre, poiché il tuo lavoro non si adatterà più alla comprensione del significato del modello da parte dei tuoi colleghi, perderai il costo del vantaggio comunicativo. In effetti, probabilmente aumenterai il costo della comunicazione oltre il costo senza schemi, perché l'uso improprio dello schema darà ai tuoi colleghi una falsa comprensione della soluzione, che è peggio di nessuna comprensione.