Credo che la banda di quattro stessi classifichi i modelli di design come
una soluzione comune a un problema che si verifica comunemente *
Quindi sì, i modelli sono rilevanti quando si verifica lo stesso tipo di problema. E questo ci porta ad un problema con il termine "Design Pattern". Un modello è qualcosa di riconoscibile che si verifica ripetutamente. Quindi in realtà non esiste uno schema di disegni, c'è uno schema di problemi.
Alcuni linguaggi di programmazione possono avere soluzioni native per alcuni di questi problemi. Lo stesso libro "Design Patterns" menziona che lo schema visitatore ha scarso valore se si utilizza CLOS, poiché il servizio di invio multiplo è supportato nativamente da CLOS, il problema stesso che lo schema Visitatore sta cercando di risolvere.
Inoltre, il framework .NET ha un meccanismo di eventi incorporato per la pubblicazione di eventi su più listener, rendendo il modello Observer meno rilevante in questo contesto.
Il passaggio dalle applicazioni desktop alle applicazioni web ** cambia anche il tipo di problemi di programmazione che dobbiamo risolvere. Molti dei modelli nel libro "Modelli di progettazione" sono rilevanti per le applicazioni desktop, ma non tanto per le applicazioni web. Naturalmente, con le app a pagina singola, questi modelli potrebbero essere nuovamente rilevanti sul lato client.
Ma i modelli di design e libri come "Design Patterns" o "Patterns of Enterprise Application Architecture" sono di enorme valore quando sei un programmatore alle prime armi e devi affrontare per la prima volta un nuovo tipo di problema; come ero la prima volta che mi è stato chiesto di implementare la funzionalità Annulla. Se non fosse stato per il libro "Design Patterns", la mia implementazione sarebbe stata probabilmente qualcosa di simile alla memorizzazione di un'istantanea dei dati dopo ogni operazione di cambio di stato *** - un approccio molto incline all'errore e orribilmente inefficiente.
Quindi sì, alcuni degli schemi diventano meno rilevanti nel tempo e man mano che diventi un programmatore esperto, pensi meno a loro. Ma per un principiante sono preziosi, purché ricordi che sono i mezzi per risolvere un problema e non una ricerca per usarne il maggior numero possibile.
* la citazione potrebbe non essere precisa al 100% poiché è stata presa dalla memoria
** nella mia esperienza, sta diventando molto comune per le aziende scegliere i meccanismi di consegna web per le applicazioni line-of-business interne.
*** dopo aver appreso la programmazione funzionale e le strutture di dati funzionali, questo potrebbe effettivamente essere il modo in cui lo risolverei oggi.