Sono un principiante confuso e un programmatore hobbista che cerca di ottenere una presa su questo, quindi perdonami se la mia domanda è un po ‘fuori o non ha molto senso.
Vedo molte domande su SO che ruotano attorno all’uso di modelli di progettazione e mi chiedo se qualcuno abbia delle buone risorse per apprendere e implementare modelli di progettazione? Capisco l’idea generale e so come / quando usarne un paio (Singletons, metodi Factory) ma so che mi sto perdendo.
(Nel caso in cui sia importante, la mia lingua preferita è C # ma potrei imparare dagli esempi in altre lingue)
Head First Design Patterns
e la pagina Wikipedia Design Pattern sono le migliori risorse per i principianti. FluffyCat è un’altra risorsa online gratuita e buona per i modelli di progettazione sia in Java che in PHP .
Il libro della Gang of Four è dove andare dopo, ma è abbastanza avanzato, quindi aspetterò fino a quando non avrai una buona presa sulle altre risorse.
I modelli di progettazione sono ottimi per vari motivi:
Ma quando il tuo objective è solo quello di apprendere modelli di progettazione, penso che manchi le basi. Tutti i modelli di progettazione sono basati su principi più comuni. Principio aperto di alta coesione, basso accoppiamento aperto chiuso, ASCIUTTO, Principio di sostituzione di Liskov ecc. Per questi fondamenti vorrei leggere i seguenti libri in questo ordine:
Dopo di che sei pronto per la banda di base di quattro modelli di design
Il prossimo passo:
E ricorda sempre: il modello non è l’objective!
Aggiungo che il libro Design Patterns della “Gang of four” è una bibbia per chiunque sia seriamente interessato ai modelli di design.
Il mio consiglio:
Leggi molto sui modelli di diverse fonti.
Cercare di forzare quanti più modelli possibili in tutto il codice che stai scrivendo come questo punto non darà buoni risultati. Invece, lasciate riposare le informazioni nel vostro cervello per un po ‘(leggi: mesi).
All’improvviso ti troverai inciampare in un problema o in un pezzo di codice e ti ricorderai vagamente che hai visto qualcosa che potrebbe funzionare come soluzione a questo particolare problema. Ora è il momento di cercare i dettagli sul modello che stai pensando e provare ad applicarlo.
Questo è quello che ha funzionato per me, comunque.
Questo sito tutorial contiene le seguenti sottosezioni
Questo sito contiene anche una guida su Anti Patterns , UML e Refactoring .
Bruce Eckel ha un libro sui modelli di design , anche se è Java, è incredibile come tutti i suoi libri. E la cosa migliore è che sono gratis!
Modelli di design C # 3.0 per una prospettiva C # sui modelli di progettazione.
alt text http://oreilly.com/catalog/covers/9780596527730_cat.gif
Un libro introduttivo che ho trovato utile e ben scritto è Design Patterns Explained di Alan Shalloway e James Trott (Addison Wesley).
testo alternativo http://ecx.images-amazon.com/images/I/5172GGH8QHL._SL500_AA240_.jpg
Non iniziare dal libro Gang of Four , perché non è un libro introduttivo con qualsiasi mezzo.
Consiglierei di dare un’occhiata alla quintologia di Jean Paul Boodhoo (?) Su Demystifying Design Patterns su DNRtv, gli url forniti di seguito. I videocast toccano Singleton, Abstract Factory tra gli altri, con la differenza che puoi guardarlo mentre discute la teoria. Buono da guardare durante il pranzo in un giorno della settimana piovoso.
http://www.dnrtv.com/default.aspx?showNum=63 http://www.dnrtv.com/default.aspx?showNum=65 http://www.dnrtv.com/default.aspx?showNum= 68 http://www.dnrtv.com/default.aspx?showNum=71 http://www.dnrtv.com/default.aspx?showNum=92
Un’annotazione per i commenti sopra.
Un riferimento rapido per i modelli GOF
Ecco un buon punto in cui è ansible avviare dofactory.com/patterns/patterns.aspx : è ansible trovare il collegamento a ciascun modello e le relative implementazioni.
Tuttavia, ricorda che questi sono modelli GOF. Potrebbe essere necessario leggere e comprendere schemi avanzati anche dopo aver acquisito sufficiente esperienza in OOAD. Head First Design Patterns è un buon inizio e, dopo aver fatto qualche progresso, andare con Enterprise Application Architecture Pattern di Martin Fowler.
Applicazione di modelli di progettazione: il processo del pensiero
Un altro aspetto principale: l’applicazione di modelli di progettazione è importante quanto la loro conoscenza. Leggere questi articoli potrebbe aiutarti anche tu.
Applicazione di modelli di progettazione Parte I
Applicazione di modelli di progettazione Parte II
Spero che questo ti aiuti
testo alternativo http://ecx.images-amazon.com/images/I/51Rs5KgdLTL._SL500_BO2,204,203,200_AA219_PIsitb-sticker-dp-arrow ,TopRight,-24,-23_SH20_OU01_.jpg
Head First Design Patterns è buono come altri già notato. Oltre a questo, naturalmente il libro originale e i modelli di design C #. Inoltre ci sono buoni siti web già menzionati.
Oltre all’autoapprendimento, consiglio vivamente di iniziare o di frequentare un gruppo di studio sul modello nella tua zona. Per una spiegazione e un big ordine per studiare gli schemi, vedere una guida alla formazione per progettare i modelli. Abbiamo fatto questo e posso dire onestamente che non avrei capito quanto lo so ora. Un incontro settimanale con altre persone interessate ti mantiene sorprendentemente disciplinato quando apprendi qualcosa di astratto come i modelli di design.
Studi felici!
Prima di spendere soldi per i libri, consiglierei la pagina dei modelli di design eccellente di Wikipedia. Anche per qualcosa di diverso su Google per “screencast pattern design” o ricerca di “modelli di design” su YouTube . Ottenere le stesse informazioni presentate in modo diverso spesso aiuta a far cadere il penny.
Il libro Gang of Four è il testo definitivo sui pattern più noti, ma non è così facile da leggere e con esempi C ++ non preferiti da tutti.
Il testo Head First Design Patterns è molto più accessibile ma contiene solo un sottoinsieme dei pattern Gang of Four.
La cosa più importante è capire dove e perché un particolare schema è utile. Successivamente, cerca nel web esempi di implementazione nella lingua di tua scelta ed esegui esperimenti fino a quando non “ottieni”. Comprendi uno schema prima di passare a quello successivo. Tutti comprendono alcuni modelli migliori di altri (e ce ne sono centinaia di altri meno conosciuti).
Continua a tappare.
Patterns of Enterprise Application Architecture (Hardcover) di Martin Fowler
Refactoring to Patterns (Hardcover) di Joshua Kerievsky
Integrazione continua: migliorare la qualità del software e ridurre i rischi (in brossura) di Paul Duval et.al.
Beyond Software Architecture: Creazione e mantenimento di soluzioni vincenti (Brossura) di Luke Hohmann
Gli schemi di progettazione sono come qualsiasi funzione di libreria, leggi su di essi, quindi quando si verifica un problema, il modello di progettazione sarà nel tuo “Toolchest”. Ci sono molti libri di design pattern tutti modellati secondo i modelli di “Gang of four” originali.
Per tutti i programmatori, penso che sia il libro Refactoring di Fowler siano i requisiti minimi assoluti.
Per i siti Web, un ottimo sito è http://ajaxpatterns.org , di uno degli sviluppatori del sito Web di ajaxian
Il libro Design Pattern originale è un must per tutti i programmatori.
È un libro eccellente a tutti i livelli: layout, chiarezza, intuizione, profondità. È uno di quei grandi libri che leggi prima cover-to-cover, quindi utilizzali come riferimento finché non lo conosci letteralmente.
Potresti iniziare dalla pagina di Wikipedia , ma concediti anche l’ottimo libro.
Applicazione di UML e Pattern di Craig Larman. Inizia dalla base dell’analisi, progetta e utilizza uno scenario Case semplice. Introduce la maggior parte degli schemi di base in un modo semplice.
Se leggi i modelli di progettazione, noterai che Java sembra averne implementati alcuni.
Guarda la fonte per qualsiasi framework e puoi raccogliere informazioni sui modelli di design. Personalmente non li vedo adatti perfettamente a nessuno dei miei codici, a volte gli esempi nei libri e nelle esercitazioni sembrano un po ‘idealizzati, specialmente per il programmatore solitario.
I modelli di progettazione non sono per programmatori pigri.
Per me e i miei colleghi studio Design Pattern che segue su Pattern Study Group . Preparano una lista di ogni modello che dovremmo imparare in ordine e hanno anche le domande di apertura che rendono più discussione in gruppo.
Suggerisco anche di fare uno shufty con Refactoring to Patterns una volta che hai letto Head First Design Patterns.
Nota: gli esempi di codice sono in Java, ma dovrebbero essere molto simili agli esempi C # …
Non ha molto senso per me per qualcuno con poca esperienza di approfondire troppo profondamente i modelli di design. È bello sapere che esistono, ma a questo punto dovresti concentrarti maggiormente su altre cose piuttosto che limitarti a conoscere i modelli di progettazione.
Sono utili nel contesto di un problema: come concetto per uno sviluppatore nuovo / principiante, non sono davvero di gran valore pratico a parte sapendo che dovresti farne uso quando e dove puoi.
MODIFICA Per chiarire: molti schemi di progettazione sono il risultato di problemi riscontrati in alcuni domini. Difficilmente ci si può aspettare un nuovo programmatore (IMO) per conoscere i modelli di progettazione da utilizzare per alcuni problemi. Proprio come otteniamo un’infarinatura di algoritmi negli studi CS, abbiamo bisogno di una comprensione delle cose che possiamo fare con i modelli e i loro benefici, ma quando una persona sta ancora costruendo mondo ciao o scoprendo stl non c’è molto bisogno pratico di modelli di design. I modelli sono fantastici. Ma loro non sono il proiettile d’argento.
(Né CASE (strumenti), né è / era UML, né SCRUM, né TDD, né STL, né Java, né XML, ecc.) Questi sono solo alcuni aspetti della nostra professione e trattare questi argomenti come il secondo venire è ingenuo.
I pattern comprendono i programmatori di vocabolario di alto livello utilizzati per parlare di design astratto. Se stai riutilizzando una soluzione astratta, è utile fare riferimento ad essa per nome. Se si inventa un modello, è professionale fare un piccolo controllo per assicurarsi che non sia già stato dato un nome. Se è stato nominato, la descrizione potrebbe essere utile.
Dopo aver programmato anche solo un po ‘, ti accorgerai di scrivere qualcosa di simile a quello che hai codificato prima. Questo è uno schema Anche se è un modello minuscolo, vale la pena di notarlo. C’è uno schema migliore? Vedi certi piccoli schemi che cooperano insieme per risolvere un problema più grande? Bene, la prossima volta, quando vuoi risolvere un problema più grande, l’intero schema ti viene in mente come un singolo pezzo. La messa a fuoco delle linee dettagliate del codice diventa meccanica.
Più noti i pattern, più diventa facile la programmazione e più apprezzerai alcuni dei pattern più grandi e migliori elaborati da altri programmatori. Prova a padroneggiare il pattern MVC. In un modo o nell’altro, le variazioni si manifestano ovunque, anche in minuscole decisioni di design.
Una volta compreso il concetto, analizza il codice sorgente o il design di Eclipse, molti esempi veramente validi di questi modelli (nessuna sorpresa, Gamma era uno dei designer).
Ho trovato che gli articoli di design pattern su questo sito sono davvero facili da capire
Disegni di progettazione in C #