Stavo per commentare l'eccellente risposta di Falcon, ma ho avuto troppo da dire per usare un commento.
Design patterns are good, but complex.
Come altri hanno notato, il codice ben scritto utilizzerà schemi di progettazione, anche se non implementati intenzionalmente. I modelli di progettazione sono osservati, non inventati. Più semplici i modelli di progettazione tendono ad adattarsi a più casi.
I pattern di progettazione complessi sono soluzioni a problemi complessi. Spesso è meglio usare lo schema di progettazione appropriato piuttosto che inventare la propria soluzione complessa.
Allineare un problema a un motivo di progettazione in un anti-pattern. Se il modello non si adatta al problema, non dovrebbe essere usato.
Implementing design patterns need more sophisticated developers
and which in turn raises project costs.
Gli sviluppatori più sofisticati possono arrivare a un salario più alto. Tuttavia, dovrebbero venire con una maggiore produttività. C'è stata una ricerca che mostra enormi differenze di produttività tra i programmatori. Pagheresti il 50 percento in più da qualcuno quattro o cinque volte più produttivo?
Gli sviluppatori più sofisticati hanno meno probabilità di introdurre bug costosi nel tuo software. Ciò ridurrà i costi di test, oltre a ridurre la rilavorazione per rimuovere i bug.
Il loro codice sarà in genere più semplice e più economico da mantenere nei casi in cui vengono rilevati errori o è necessario estendere la funzionalità.
On the other hand, they make code neat and clean.
I modelli di progettazione sono uno dei numerosi strumenti che renderanno il tuo codice pulito e ordinato. Offrono anche soluzioni comprovate a problemi comuni. Ci saranno molte opportunità sulla maggior parte dei progetti per usare l'inventiva su problemi che non si adattano a modelli di design ben noti.