Il problema con i modelli di apprendimento è che devi avere abbastanza esperienza con il software per aver visto il modello (normalmente senza nome) nel codice scritto o mantenuto. Se non hai mai scritto un osservatore, leggere la descrizione del modello non sarà facile da digerire.
Non sto dicendo che non si dovrebbe leggere sui modelli. Ma sappi che la capacità di apprezzare i modelli è limitata dall'inesperienza.
L'altro problema con gli schemi, e il problema che si avrà, è che non esistono. Almeno loro esistono ancora meno che il "software" esiste. I modelli sono idee e concetti. Non sono codice eseguibile. Il codice eseguibile può implementare un modello ma il contrario non esiste. Non puoi semplicemente digitare "singleton" nel tuo codice e improvvisamente esiste un singleton. Non esiste una lingua in cui l'aggiunta di un attributo "visitatore" faccia improvvisamente la colla per implementare il modello di visitatore. Esistono best practice ed esempi di pattern in varie lingue, ma non sono qualcosa che puoi inserire in una libreria e solo chiamare.
Quindi ciò che si vuole veramente è insegnare alcune buone pratiche in cui il nucleo di tali pratiche implica il riconoscimento e l'utilizzo di modelli. Essere osservanti è un'abilità molto difficile da insegnare (per tutte le forme di osservazione).
Il terzo problema con i pattern è che non sono realmente il dominio dei programmatori. Sono formalmente chiamati modelli di design per una ragione. Sono più propriamente una costruzione del tempo di progettazione. Certo, puoi usare i modelli per aiutare a rifattorizzare il codice esistente. Ma in generale, i modelli di progettazione sono in gergo per semplificare la discussione sul design. Questo è di nuovo il motivo per cui non ci sono librerie di codice singleton. Usare un singleton è un approccio al codice, non al codice stesso.
Tutto ciò che ha detto, cercando di educare i programmatori sui modelli di progettazione non può far male. Fare in modo che i programmatori pensino è una buona cosa e se solo uno di loro se ne allontana con più di una comprensione superficiale dei pattern, probabilmente esci dal gioco. In bocca al lupo.
Come ha fatto questa classe va? – jmucchiello
Pluralsight: https://www.pluralsight.com/courses/patterns-library – ssmith