Commenti
- Non ' non sono sicuro che questo sia ciò che ' ci sto pensando, ma trovo molte cose di sviluppo intelligenti su Forrst .
- Che ne dici di un titolo di " Fonti di riferimento per design pattern
o " Design pattern resources " (dato che non ' t significa " riferimento " semplicemente " ricerca su richiesta ") e spostare tutto il contenuto dellelenco nel corpo (o rimuoverlo)?
Risposta
Design Pattern: elementi del software riutilizzabile orientato agli oggetti si avvicina molto alla mia definizione di libro canonico sui modelli di progettazione. Secondo il suo articolo di Wikipedia (enfasi mia):
La data di pubblicazione originale di il libro era il 21 ottobre 1994 con un copyright del 1995 e, a partire da luglio 2010, il libro era nella sua 38a edizione . Il libro è stato messo a disposizione del pubblico per la prima volta durante la riunione OOPSLA tenutasi a Portland, Oregon, nellottobre 1994. È stato molto influente nel campo dellingegneria del software ed è considerato unimportante fonte per la teoria e la pratica del design orientato agli oggetti. Sono state vendute più di 500.000 copie in inglese e in altre 13 lingue .
Ward Cunningham , pioniere dei modelli di design, gestisce un catalogo online dei modelli del libro “s su WikiWikiWeb . E secondo larticolo di Wikipedia su design pattern (di nuovo, enfasi mia):
Design patterns ha guadagnato popolarità nel settore dellinformatica dopo che il libro Design Patterns: Elements of Reusable Object-Oriented Software è stato pubblicato nel 1994 dalla cosiddetta “Gang of Four” (Gamma et al.).
Ci sono parecchi altri libri citati nel stesso articolo degno di nota nel genere:
- Pattern-Oriented Software Architecture Volume 1: A System of Patterns , di Douglas Schmidt, Michael Stal, Hans Rohnert e Frank Buschmann,
- Patterns of Enterprise Application Architecture di Martin Fowler,
- Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions ., By Hohpe, Gregor and Bobby Woolf, and
- Head First Design Patterns , di Eric T. Freeman, Elisabeth Robson, Bert Bates e Kathy Sierra.
Di quelli che ho letto il libro di Fowler, è molto influente e una buona lettura. In certi punti è un po vago per i miei gusti, ma nel complesso è un libro piacevole. Esiste un catalogo online dei modelli inclusi nel libro, con descrizioni minime.
Ho anche dato unocchiata a Head First Design Patterns e, se hai letto qualsiasi altro libro della serie Head First, è della stessa alta qualità e divertente di la maggior parte dei libri della serie :
Head First è una serie di libri didattici introduttivi a molti argomenti, pubblicati da O “Reilly Media. Sottolinea una combinazione non ortodossa, visivamente intensiva e coinvolgente per il lettore di puzzle, battute, design e layout non standard e uno stile accattivante e colloquiale per immergere il lettore in un determinato argomento.
Il termine “design pattern” è alquanto vago, poiché ogni soluzione generale riutilizzabile può essere considerata un design pattern. “Ho sempre notato una tendenza ad applicare letichetta sulle soluzioni descritte in una dei libri degni di nota che ho elencato sopra, e più specificamente i libri Gang of Four e Fowler. I design pattern non seguono un processo di sviluppo unico, sono normali soluzioni software s che risultano essere immensamente riutilizzabili e sono estremamente difficili da identificare .
Ma se confronti i cataloghi online di entrambi i libri con i contenuti di libri in una lingua specifica, noterai che sono spesso usati come modelli. Quindi direi che entrambi i libri sono molto vicini allessere canonici riferimenti, con il libro GoF che è il più importante da una prospettiva storica, anche se entrambi i libri sono limitati alla programmazione orientata agli oggetti .
Commenti
- +1. In realtà volevo darti +5 ma purtroppo ' non è consentito.
- Lintera serie di Pattern-Oriented Software Architecture riguarda i pattern in diversi tipi di sistemi – Il volume 1 riguarda i modelli architettonici e i modelli che intersecano i domini, il volume 2 riguarda i sistemi concorrenti, il volume 3 riguarda la gestione delle risorse nei sistemi in rete / distribuiti, il volume 4 riguarda i sistemi distribuiti e il volume 5 riguarda anche i linguaggi dei pattern come riferimento per gli altri 4 volumi. Data la domanda, penso che anche il volume 5 potrebbe essere applicabile, ma ' non ci ho passato troppo tempo … per ora.
- @Yannis questo e head first generalmente si basa su linguaggi tipizzati statici. Esistono buoni libri per linguaggi dinamici come Python.
- @ ravi404 norvig.com/design-patterns
Answer
Il libro di Gang of Four – Design Patterns: Elements of Reusable Object- Il software orientato è probabilmente la cosa più vicina a uno standard del settore sui modelli di progettazione.
Per unintroduzione più accessibile, Head First: Design Anche Patterns va bene. Non lasciarti scoraggiare dalla copertina “trendy”, in quanto è una buona lettura e probabilmente ti aiuterà a cogliere i concetti del libro GoF molto più facilmente se lo leggi per primo.
Risposta
In un dato momento, da qualche parte nel mondo qualcuno ha gli stessi problemi di progettazione del software che hai tu. Sai che non vuoi reinventare la ruota (o peggio, una gomma a terra), quindi guardi a Design Patterns – le lezioni apprese da coloro che hanno affrontato gli stessi problemi. Con Design Patterns, puoi sfruttare le migliori pratiche e lesperienza degli altri, in modo da poter dedicare il tuo tempo a … qualcosaltro. Qualcosa di più impegnativo. Qualcosa di più complesso. Qualcosa di più divertente.
Vuoi conoscere gli schemi che contano: perché usarli, quando usarli, come usarli (e quando NON usarli). Ma non vuoi solo vedere come appaiono i modelli in un libro, vuoi sapere come appaiono “in natura”. Nel loro ambiente nativo. In altre parole, nelle applicazioni del mondo reale. Vuoi anche imparare come i modelli vengono utilizzati nellAPI Java e come sfruttare il supporto di pattern integrato di Java nel tuo codice.
Vuoi imparare i veri principi di progettazione OO e perché tutto ciò che il tuo capo ti ha detto sullereditarietà potrebbe essere sbagliato (e cosa fare invece). Vuoi imparare come questi principi ti aiuteranno la prossima volta che “ti ritroverai in un torrente senza uno schema di progettazione.
Soprattutto, vuoi imparare il” linguaggio segreto “di Design Patterns in modo da poter tenere il tuo con il tuo collega (e stupisci gli ospiti del cocktail party) quando menziona casualmente il suo uso straordinariamente intelligente di Command, Facade, Proxy e Factory tra un sorso e laltro di un martini. Risponderai facilmente con la tua profonda comprensione del motivo per cui Singleton Non è così semplice come sembra, come la Factory sia così spesso fraintesa, o sul vero rapporto tra Decorator, Facade e Adapter.
Con Head First Design Patterns , eviterai limbarazzo di pensare che Decorator sia qualcosa dello spettacolo “Trading Spaces” …
Commenti
- Questo. ' è una lettura molto accessibile e ha cambiato il modo Mi avvicino completamente allingegneria del software.
- lintera serie di head first è fantastica, soprattutto per gli sviluppatori che iniziano.
- Adoro il libro, ma odio assolutamente la copertina! Un collega non programmatore di il mio è passato dal mio ufficio laltro giorno, ha visto il libro e ha detto " Head First Designer Patterns? Stai entrando nel business della moda? "
- @Pete Perché la copertina può metterti più nei guai. Apparentemente vive una doppia vita. fishbowl.pastiche. org / 2005/08/12 / …
Risposta
Sì, cè un libro ben noto sul design n patterns: Design Patterns: Elements of Reusable Object-Oriented Software e gli autori sono spesso chiamati “the Gang of Four” (GoF) ed è referenziato in quasi tutti testi sui modelli di progettazione.
Commenti
- Anche il libro di Martin Fowler ': amazon.com/Patterns-Enterprise-Application-Architecture-Martin/…
- Questo è non un libro sui modelli di design. È ' un catalogo di modelli. Allinizio ' una breve introduzione ai design pattern, ma non ' penso che questa introduzione sia sufficiente.
- @J ö rgWMittag ' s non è ' un processo unico di creazione del design i modelli, i modelli di progettazione sono soluzioni riutilizzabili relativamente piccole. I design pattern vengono creati attraverso i normali processi di sviluppo del software, ciò che li contraddistingue è la loro immensa riusabilità. Lunico processo univoco rilevante è identificare una soluzione come modello di progettazione e i cataloghi lo fanno con precisione.
Risposta
Design pattern: elementi di software riutilizzabile orientato agli oggetti
Da wikipedia :
Design Patterns: Elements of Reusable Object-Oriented Software è un libro di ingegneria del software che descrive soluzioni ricorrenti a problemi comuni nel software design. Gli autori del libro sono Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides con una prefazione di Grady Booch. Gli autori sono spesso indicati come Gang of Four, GoF o Go4. Il libro è diviso in due parti, con i primi due capitoli che esplorano le capacità e le insidie della programmazione orientata agli oggetti e i capitoli rimanenti che descrivono 23 modelli di progettazione di software classici. Il libro include esempi in C ++ e Smalltalk.
Risposta
Uno dei migliori siti web di design pattern in circolazione è il Wiki di Ward, il primo wiki. Vedi http://c2.com/cgi/wiki?HistoryOfPatterns per una buona pagina iniziale.
Nel 1987, Ward e Kent si stavano consultando con il Semiconductor Test Systems Group di Tektronix che aveva problemi a finire un progetto. Decisero di provare i modelli che stavano studiando. Come Alexander che ha detto che gli occupanti di un edificio dovrebbero progettarlo, Ward e Kent hanno lasciato che i rappresentanti degli utenti (un formatore e un ingegnere sul campo) completassero il progetto.
Ward ha escogitato un “linguaggio” a cinque schemi che ha aiutato i designer alle prime armi a sfruttare i punti di forza di Smalltalk ed evitarne i punti deboli …
Ward e Kent sono rimasti stupiti dalleleganza (dichiaratamente spartana) dellinterfaccia progettata dai loro utenti. Hanno riferito i risultati di questo esperimento allOOPSLA 87 di Orlando. Hanno scritto una posizione del pannello e presentato al seminario di Norm Kerth su Da dove vengono gli oggetti? Hanno parlato di modelli fino a quando non sono diventati blu in faccia, e hanno molti accordi, ma senza schemi più concreti nessuno si iscriveva.
Nel frattempo, Erich Gamma era impegnato a scrivere e riflettere sul design orientato agli oggetti in ET ++ come parte della sua tesi di dottorato. Erich aveva capito che le strutture o i modelli di design ricorrenti erano importanti. La domanda era davvero come catturarli e comunicarli.
Bruce Anderson ha tenuto un discorso a TOOLS 90 in cui ErichGamma era presente; A Erich piaceva il discorso. Bruce ha tenuto un articolo allEcoopOopsla90 (Ottawa) e ha condotto un BOF chiamato Toward an Architecture Handbook in cui lui, Erich Gamma, Richard Helm e altri hanno discusso sui modelli.Quella è stata la prima volta che Richard ed Erich si sono incontrati e si sono resi conto di condividere idee comuni sulle idee chiave dietro la scrittura di software OO riutilizzabile.
Appena prima dellECOOP “91 Erich Gamma e Richard Helm, seduti su un sul tetto di Zurigo in una soffocante giornata estiva, metti insieme gli inizi molto umili del catalogo di modelli che alla fine sarebbero diventati DesignPatterns …
Le cose si sono davvero rotte al workshop OOPSLA che Bruce ha tenuto nel 1991 Per coincidenza, Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides erano tutti presenti; in seguito sarebbero diventati la Gang of Four che ha creato il libro Design Patterns …
Risposta
Penso che il Refactoring a Patterns può essere utile semplicemente perché descrive come un certo design / codice può essere refactored verso i modelli nel libro GoF. Questo può aiutare a superare la curva di apprendimento iniziale. Oh, e contempla anche “Pattern-happiness” 🙂
Potresti anche trovare che i primi tre volumi di Pattern-Oriented Software Architecture siano una buona lettura.
Risposta
Questo sito tutorial contiene le seguenti sottosezioni
- Intento di ogni modello di progettazione
- Struttura del mondo reale per il modello di progettazione
- Una dichiarazione di problema
- Discussione dettagliata sul problema
- Elenco di controllo su come arrivare a uno schema
- Regole pratiche mentre si arriva a pattern.
- Snippet di codice per il design pattern che include C #, C ++, Delphi, Java e PHP
Questo sito contiene anche una guida su Anti Patterns, UML e refactoring.
Commenti
- Il sito SourceMaking a prima vista sembra semplicistico, ma ' s davvero un ottimo riferimento. A parte gli schemi di progettazione, alcuni degli antipattern di & gestione dei progetti di sviluppo e architettura sono esilaranti. Le soluzioni refactoring possono effettivamente aiutarti a salvare una riunione che ' sta andando fuori dai binari. (Non male come riferimento per un design pattern)
Answer
Il libro originale, “Design Patterns: Elements of Software riutilizzabile orientato agli oggetti “è una buona risorsa per i modelli di progettazione orientati agli oggetti.
Esistono molti altri libri là fuori. Quando ho bisogno di una rapida consultazione e il mio libro GoF è fuori portata, Wikipedia normalmente ha abbastanza informazioni su questi e altri modelli di progettazione.
Questi sono i principali che uso. Va anche notato che le persone hanno iniziato ad applicare il formato pattern ad altre cose, come la gestione del progetto.
Se vuoi sapere sugli antipattern, di cui dovresti essere a conoscenza, ci sono due libri, “AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis” e “Refactoring: Improving the Design of Existing Code” che ha una sezione sugli odori di codice, un altro nome per antipatterns.
Risposta
“Agile Principles, Patterns, and Practices in C #” di Robert C. Martin. Penso che abbia anche una versione Java del libro.
Inoltre, non è un modello in sé, ma Domain Driven Design ha alcuni concetti fantastici anche se non si sceglie lapproccio DDD completo.
* Ubiquitous Language * Code first approach (vs. DB first) * etc.
Risposta
Se sei interessato in modo specifico ai modelli di progettazione in C ++ prova Design moderno in C ++ di Andrei Alexandrescu.
Questo libro parla di come implementare commonl Ho usato modelli come Factory, Singleton e Visitor in C ++. Parla anche di argomenti molto specifici del C ++ come puntatori intelligenti, metaprogrammazione di modelli e progettazione di classi basata su criteri.
Lautore del libro è un esperto autorevole , noto per il suo
lavoro pionieristico sulla progettazione basata su criteri implementata tramite metaprogrammazione di modelli. Queste idee sono articolate nel suo libro Modern C ++ Design e sono state implementate per la prima volta nella sua libreria di programmazione, Loki. Ha anche implementato il concetto di “costruttori di spostamento” nella sua libreria MOJO. Ha contribuito al C / C ++ Users Journal con il titolo “Generic < Programming >” …
Commenti
- ti dispiacerebbe spiegare di più su cosa fa e cosa fa ' va bene? " Risposte solo link " non sono le benvenute in Stack Scambia
- @gnat: come ' è questo?
- beh, la tua recente modifica sembra certamente un miglioramento per me.Anche se i lettori della risposta trarrebbero probabilmente beneficio da una spiegazione più dettagliata di chi è Aleksandresku
- @gnat: dato che ovviamente sai chi è, sentiti libero di modificare la mia risposta.