Esiste un libro canonico sugli schemi di progettazione? [chiuso]


Sono interessato all'apprendimento di modelli di progettazione e vorrei sapere quali sono considerati libri di livello superiore nell'apprendimento di questo argomento.

Esiste un libro là fuori che è lo standard de facto per descrivere le migliori pratiche, le metodologie di progettazione e altre informazioni utili sui modelli di progettazione? Che dire di quel libro lo rende speciale?

posta mW00t 08.12.2011 - 23:50

11 risposte


Motivi di progettazione: elementi del software orientato agli oggetti riutilizzabile è molto vicino alla mia definizione di un libro canonico su modelli di progettazione. Secondo il suo articolo di Wikipedia (enfasi mia):

The original publication date of the book was October 21, 1994 with a 1995 copyright, and as of July 2010, the book was in its 38th printing. The book was first made available to the public at OOPSLA meeting held in Portland, Oregon, in October 1994. It has been highly influential to the field of software engineering and is regarded as an important source for object-oriented design theory and practice. More than 500,000 copies have been sold in English and in 13 other languages.

Ward Cunningham , un pioniere dei modelli di progettazione, mantiene un catalogo online degli schemi del libro su WikiWikiWeb . E secondo l'articolo di Wikipedia su schema di progettazione (ancora, enfasi mia):

Design patterns gained popularity in computer science after the book Design Patterns: Elements of Reusable Object-Oriented Software was published in 1994 by the so-called "Gang of Four" (Gamma et al.).

Ci sono molti altri libri a cui si fa riferimento nello stesso articolo come notabili nel genere :

Di quelli che ho letto il libro di Fowler, è molto influente e una buona lettura. In alcuni punti è un po 'vago per i miei gusti, ma nel complesso è un libro divertente. C'è un catalogo online dei modelli inclusi nel libro, con descrizioni minime.

Ho anche sfogliato Head Head 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 is a series of introductory instructional books to many topics, published by O'Reilly Media. It stresses an unorthodox, visually intensive, reader-involving combination of puzzles, jokes, nonstandard design and layout, and an engaging, conversational style to immerse the reader in a given topic.

Il termine "modello di progettazione" è alquanto vago, poiché ogni soluzione generale riutilizzabile può essere considerata un modello di progettazione. Ho sempre notato una tendenza ad applicare l'etichetta sulle soluzioni descritte in uno dei libri più importanti che ho elencato sopra, e più specificamente i libri di Gang of Four e Fowler. I modelli di progettazione non seguono un processo di sviluppo unico, sono normali soluzioni software che sono immensamente riutilizzabili e sono estremamente difficile da identificare .

Ma se si confrontano i cataloghi online di entrambi i libri con i contenuti di libri specifici della lingua, si noterà che vengono spesso utilizzati come modelli. Quindi direi che entrambi i libri sono molto vicini ai riferimenti canonici, con il libro dei GoF che è il più importante da una prospettiva storica, anche se entrambi i libri sono limitati a programmazione orientata agli oggetti .

risposta data 09.12.2011 - 00:06

Il libro Gang of Four - Modelli di design: elementi del software orientato agli oggetti riutilizzabile è probabilmente la cosa più vicina dobbiamo uno standard del settore sui modelli di progettazione.

Per un'introduzione più accessibile, Head First: Design Patterns è buono. Non lasciatevi scoraggiare dalla copertina "trendy", poiché è una buona lettura e probabilmente vi aiuterà a cogliere i concetti del libro GoF molto più facilmente se lo leggete per primi.

risposta data 13.09.2010 - 11:51

At any given moment, somewhere in the world someone struggles with the same software design problems you have. You know you don't want to reinvent the wheel (or worse, a flat tire), so you look to Design Patterns--the lessons learned by those who've faced the same problems. With Design Patterns, you get to take advantage of the best practices and experience of others, so that you can spend your time on...something else. Something more challenging. Something more complex. Something more fun.

You want to learn about the patterns that matter--why to use them, when to use them, how to use them (and when NOT to use them). But you don't just want to see how patterns look in a book, you want to know how they look "in the wild". In their native environment. In other words, in real world applications. You also want to learn how patterns are used in the Java API, and how to exploit Java's built-in pattern support in your own code.

You want to learn the real OO design principles and why everything your boss told you about inheritance might be wrong (and what to do instead). You want to learn how those principles will help the next time you're up a creek without a design pattern.

Most importantly, you want to learn the "secret language" of Design Patterns so that you can hold your own with your co-worker (and impress cocktail party guests) when he casually mentions his stunningly clever use of Command, Facade, Proxy, and Factory in between sips of a martini. You'll easily counter with your deep understanding of why Singleton isn't as simple as it sounds, how the Factory is so often misunderstood, or on the real relationship between Decorator, Facade and Adapter.

With Head First Design Patterns, you'll avoid the embarrassment of thinking Decorator is something from the "Trading Spaces" show...

risposta data 13.09.2010 - 11:49

Sì, esiste un libro ben noto sui modelli di progettazione: Modelli di progettazione: elementi del software orientato agli oggetti riutilizzabile e gli autori sono spesso chiamati "la banda dei quattro" (GoF) e vengono citati in quasi tutti i testi sui modelli di design.

risposta data 08.12.2011 - 23:53

Modelli di progettazione: elementi del software riutilizzabile orientato agli oggetti

Da wikipedia :

Design Patterns: Elements of Reusable Object-Oriented Software is a software engineering book describing recurring solutions to common problems in software design. The book's authors are Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides with a foreword by Grady Booch. The authors are often referred to as the Gang of Four, GoF, or Go4. The book is divided into two parts, with the first two chapters exploring the capabilities and pitfalls of object-oriented programming, and the remaining chapters describing 23 classic software design patterns. The book includes examples in C++ and Smalltalk.

risposta data 25.09.2010 - 23:23

Uno dei migliori siti web di design attorno a Ward è Wiki, il primo wiki. Vedi link per una buona pagina iniziale in esso.

In 1987, Ward and Kent were consulting with Tektronix's Semiconductor Test Systems Group that was having troubles finishing a design. They decided to try out the pattern stuff they'd been studying. Like Alexander who said the occupiers of a building should design it, Ward and Kent let representatives of the users (a trainer and a field engineer) finish the design.

Ward came up with a five pattern "language" that helped the novice designers take advantage of Smalltalk's strengths and avoid its weaknesses...

Ward and Kent were amazed at the (admittedly spartan) elegance of the interface their users designed. They reported the results of this experiment at OOPSLA 87 in Orlando. They wrote up a panel position, and presented at Norm Kerth's workshop on Where do objects come from? They talked patterns until they were blue in the face, and got a lot of agreement, but without more concrete patterns nobody was signing up.

Meanwhile, Erich Gamma was busy writing and reflecting about object-oriented design in ET++ as part of his PhD thesis. Erich had realized that recurring design structures or patterns were important. The question really was how do you capture and communicate them.

Bruce Anderson gave a talk at TOOLS 90 at which ErichGamma was present; Erich liked the talk. Bruce gave a paper at EcoopOopsla90 (Ottawa) and ran a BOF called Toward an Architecture Handbook where he, Erich Gamma, Richard Helm, and others got into discussions about patterns. That was the first time that Richard and Erich met, and they realized they shared common ideas about the key ideas behind writing reusable OO software.

Just prior to ECOOP'91 Erich Gamma and Richard Helm, sitting on a rooftop in Zurich on a sweltering summer's day, put together the very humble beginnings of the catalog of patterns that would eventually become DesignPatterns...

Things really got rolling at the OOPSLA workshop that Bruce ran in 1991. Coincidentally, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides were all there; they would later become the Gang of Four that authored the Design Patterns book...

risposta data 13.09.2010 - 11:31

Penso che il Refactoring to Patterns possa essere utile semplicemente perché descrive il modo in cui determinati disegni / codici possono essere refactoring verso gli schemi del libro GoF. Questo può aiutare a superare la curva di apprendimento iniziale. Oh, e contempla anche "Pattern-happiness":)

Potresti anche trovare i primi tre volumi dell'architettura software orientata al pattern come buona lettura.

risposta data 23.12.2010 - 22:52

Modelli di design

Questo sito tutorial contiene le seguenti sottosezioni

  • Intento di ciascun modello di disegno
  • Real World Structure per il modello di design
  • Una dichiarazione di problema
  • Discussione dettagliata sul problema
  • Elenco di controllo su come arrivare a uno schema
  • Regole empiriche per arrivare allo schema
  • Frammenti di codice per il modello di progettazione che include C #, C ++, Delphi, Java e PHP

Questo sito contiene anche una guida su Anti Pattern, UML e Refactoring.

risposta data 02.10.2010 - 18:40

"Principi, modelli e pratiche agili in C #" di Robert C. Martin. Penso che abbia anche una versione Java del libro.

Inoltre, non è un pattern in sé, ma Domain Driven Design ha alcuni grandi concetti anche se non si utilizza l'approccio DDD completo.

  * Ubiquitous Language
  * Code first approach (vs. DB first)
  * etc.
risposta data 21.10.2010 - 22:41

Se sei interessato specificamente ai modelli di progettazione in C ++, prova Design C ++ moderno di Andrei Alexandrescu.

Questo libro parla di come implementare modelli comunemente utilizzati come Factory, Singleton e Visitor in C ++. Parla anche di argomenti specifici del C ++, come puntatori intelligenti, metaprogrammazione dei modelli e progettazione della classe basata su policy.

L'autore del libro è un esperto autorevole , noto per il suo

pioneering work on policy-based design implemented via template metaprogramming. These ideas are articulated in his book Modern C++ Design and were first implemented in his programming library, Loki. He also implemented the "move constructors" concept in his MOJO library. He contributed to the C/C++ Users Journal under the byline "Generic<Programming>"...

risposta data 15.10.2010 - 22:21

Il libro originale, "Modelli di progettazione: elementi del software orientato agli oggetti riutilizzabili" è una buona risorsa per i modelli di progettazione orientati agli oggetti.

Esistono molti altri libri là fuori. Quando ho bisogno di un riferimento rapido e il mio libro GoF è fuori portata, Wikipedia ha normalmente abbastanza informazioni su questi e altri modelli di design.

Quelle sono le primarie che uso. Va anche notato che le persone hanno iniziato ad applicare il formato del pattern ad altre cose, come la gestione dei progetti.

Se vuoi conoscere gli antipattern, di cui dovresti essere a conoscenza, ci sono due libri, "AntiPattern: Refactoring Software, Architectures and Projects in Crisis" e "Refactoring: Improve the Design of Existing Code" che ha una sezione sugli odori di codice, un altro nome per antipattern.

risposta data 15.10.2010 - 22:53

Leggi altre domande sui tag