Apprendimento / implementazione di modelli di progettazione (per principianti)

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

alt text

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:

  1. ti dà una partenza per risolvere problemi comuni.
  2. offre agli sviluppatori un vocabolario per parlare di alcuni modi per risolvere i problemi in modo molto compatto.
  3. quando si lavora con sviluppatori che conoscono modelli di progettazione e si utilizzano modelli di progettazione nelle soluzioni, capiranno le soluzioni molto più velocemente.

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:

  1. Head First Oriented Analysis and Design (Head First) [ILLUSTRATED] (Brossura)
  2. Applicazione di UML e pattern (copertina rigida)
  3. Agile Principles, Patterns and Practices in C # (Robert C. Martin Series) (Copertina rigida)

Dopo di che sei pronto per la banda di base di quattro modelli di design

  1. Head First Design Patterns (Head First) [ILLUSTRATED] (Paperback)
  2. La Bibbia
  3. Un bel sito web (non comprare niente, non ne vale la pena) http://dofactory.com/Patterns/Patterns.aspx (alcune implementazioni di questo sito valgono una discussione

Il prossimo passo:

  1. Modelli di Enterprise Application Architecture (Addison-Wesley Signature Series) (Copertina rigida)
  2. I libri POSA

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.

Modelli di progettazione

Questo sito tutorial contiene le seguenti sottosezioni

  • Intento di ogni modello di design
  • Real World Structure per il modello di progettazione
  • Una dichiarazione di problema
  • Discussione dettagliata sul problema
  • Lista di controllo su come arrivare a un modello
  • Regole pratiche per arrivare al modello.
  • Frammenti di codice per il modello di progettazione che include C #, C ++, Delphi, Java e PHP

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

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 #