Modelli di design
Lontano come vanno i modelli di progettazione, io lavoro in un ambiente in cui ci sono molte dipendenze tra i componenti, quindi il modello adattatore viene utile. Soprattutto quando si tenta di introdurre cuciture nel codice per il supporto al test dell'unità. L'idea è che tu crei un wrapper su un'interfaccia di terze parti (per quanto riguarda il tuo codice) su cui si basa il tuo codice e che il wrapper è responsabile della traduzione delle richieste del tuo codice in qualsiasi cosa l'API di terze parti desideri.
Vedo anche Factory utilizzato dove dobbiamo fornire modi per istanziare gli oggetti definiti nel codice dell'infrastruttura di supporto da i suoi consumatori.
Modelli architettonici
La tua domanda, tuttavia, parla anche di diverse architetture come MVC e MVVM. Non ho usato MVVM da solo, ma sono davvero due lati della stessa moneta. Non importa se utilizzi MVC, MVVM, MVP o qualsiasi altra cosa: separare i tuoi problemi di interfaccia utente dalla tua logica aziendale e dall'accesso ai dati (se esiste) è una buona idea. Non lavoro più sull'interfaccia utente, ma quando l'ho fatto, ho passato un bel po 'di tempo a fare proprio questo.
(Si noti che ASP.NET MVC è un framework su se stesso. Fa uso dell'approccio MVC, ma fai attenzione quando lo si riferisce semplicemente come "MVC". È possibile e probabilmente verrà frainteso e le persone andranno "cosa smart URL? ")
Principi di progettazione
Oltre a questo, sono un grande fan di i principi SOLID :
-
Principio di responsabilità singola - un oggetto dovrebbe avere una sola responsabilità
-
Principio aperto / chiuso : le entità devono essere aperte per l'estensione e chiuse per la modifica. In altre parole, dovresti essere in grado di estendere il comportamento di una classe senza dover modificare il suo codice.
-
Principio di sostituzione di Liskov - le sottoclassi dovrebbero essere utilizzabili al posto di una classe base senza che il consumatore se ne accorga
-
Principio di segregazione dell'interfaccia - espone solo le cose di cui il cliente ha bisogno. Molte piccole interfacce specializzate sono migliori di una generica generica.
-
Principio di inversione delle dipendenze - dipende dalle astrazioni, non dalle concrezioni.
Li uso tutti quanti il più possibile. Ci sono buoni video introduttivi per ogni principio su Dimecasts .
E ora qualcosa di un po 'diverso ...
Detto questo, penso che ti stai avvicinando da questa direzione sbagliata. Mentre solo alcuni schemi e approcci sono popolari, penso che sia importante apprenderne quanti ne puoi a prescindere dalla loro popolarità. Direi sicuramente che dovresti imparare (almeno a livello base) ogni schema che incontri. Non sai mai quando un pattern oscuro può semplificarti la vita. Puoi sempre andare più nel dettaglio e imparare un modello in profondità quando ne hai bisogno ... ma non sai quando è necessario a meno che tu non sappia che esiste affatto e hai una vaga idea di cosa si tratta.
Dai un'occhiata alla matrice delle competenze dei programmatori , guarda dove sei e questo ti darà un percorso leggermente meno fangoso per il miglioramento complessivo di uno sviluppatore.