it-swarm-eu.dev

Gibt es ein kanonisches Buch über Designmuster?

Ich interessiere mich für das Erlernen von Designmustern und möchte wissen, was als erstklassige Bücher beim Erlernen dieses Themas gelten.

Gibt es ein Buch, das de facto der Standard für die Beschreibung von Best Practices, Entwurfsmethoden und anderen hilfreichen Informationen zu Entwurfsmustern ist? Was macht dieses Buch so besonders?

49
mW00t

Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software kommt meiner Definition eines kanonischen Buches über Entwurfsmuster sehr nahe. Laut sein Wikipedia-Artikel (Hervorhebung von mir):

Das ursprüngliche Veröffentlichungsdatum des Buches war der 21. Oktober 1994 mit einem Copyright von 1995, und ab Juli 2010 befand sich das Buch in seiner 38. Auflage . Das Buch wurde erstmals auf der OOPSLA-Tagung im Oktober 1994 in Portland, Oregon, der Öffentlichkeit zugänglich gemacht. Es hat großen Einfluss auf das Gebiet der Softwareentwicklung und gilt als wichtige Quelle für objektorientierte Designtheorie und -praxis. Mehr als 500.000 Exemplare wurden in Englisch und in 13 anderen Sprachen verkauft. .

Ward Cunningham , ein Pionier für Designmuster, unterhält ein Online-Katalog der Muster des Buches on WikiWikiWeb . Und laut Wikipedia-Artikel über Designmuster (wieder meine Betonung):

Entwurfsmuster wurden in der Informatik immer beliebter, nachdem das Buch Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software 1994 von der sogenannten "Gang of" veröffentlicht wurde Vier "(Gamma et al.).

Es gibt einige andere Bücher, auf die im gleicher Artikel verwiesen wird, die im Genre bemerkenswert sind:

Von denen, die ich in Fowlers Buch gelesen habe, ist es sehr einflussreich und eine gute Lektüre. An bestimmten Stellen ist es für meinen Geschmack etwas vage, aber insgesamt ist es ein erfreuliches Buch. Es gibt ein Online-Katalog der im Buch enthaltenen Muster mit minimalen Beschreibungen.

Ich habe auch Head First Design Patterns durchgesehen, und wenn Sie ein anderes Buch der Head First-Reihe gelesen haben, ist es von der gleichen hohen Qualität und genauso unterhaltsam wie die meisten Bücher in der Reihe :

Head First ist eine Reihe von einführenden Lehrbüchern zu vielen Themen, die von O'Reilly Media veröffentlicht werden. Es betont eine unorthodoxe, visuell intensive, leserbezogene Kombination aus Rätseln, Witzen, nicht standardisiertem Design und Layout sowie einen ansprechenden Gesprächsstil, um den Leser in ein bestimmtes Thema einzutauchen.

Der Begriff "Entwurfsmuster" ist etwas vage, da jede allgemein wiederverwendbare Lösung als Entwurfsmuster betrachtet werden kann. Ich habe immer eine Tendenz bemerkt, das Etikett auf die Lösungen anzuwenden, die in einem der bemerkenswerten Bücher beschrieben sind, die ich oben aufgeführt habe, und insbesondere auf den Büchern Gang of Four und Fowler. Entwurfsmuster folgen keinem eindeutigen Entwicklungsprozess, sondern sind normale Softwarelösungen, die immens wiederverwendbar sind und extrem schwer zu identifizieren .

Wenn Sie jedoch die Online-Kataloge für beide Bücher mit dem Inhalt sprachspezifischer Bücher vergleichen, werden Sie feststellen, dass sie häufig als Vorlagen verwendet werden. Ich würde also sagen, dass beide Bücher sehr nahe daran sind, kanonische Referenzen zu sein, wobei das GoF-Buch aus historischer Sicht das wichtigere ist, obwohl beide Bücher auf objektorientierte Programmierung beschränkt sind.

59
yannis

Das Buch der Viererbande - Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software ist wahrscheinlich das, was wir einem Industriestandard für Entwurfsmuster am nächsten kommen.

Für eine leicht zugängliche Einführung ist Head First: Design Patterns auch gut. Lassen Sie sich vom "trendigen" Cover nicht abschrecken, da es eine gute Lektüre ist und Ihnen wahrscheinlich dabei helfen wird, die Konzepte im GoF-Buch viel einfacher zu verstehen, wenn Sie es zuerst lesen.

27
richeym

(Head First Design Patterns

Zu jedem Zeitpunkt hat irgendwo auf der Welt jemand mit den gleichen Software-Design-Problemen zu kämpfen, die Sie haben. Sie wissen, dass Sie das Rad (oder schlimmer noch einen platten Reifen) nicht neu erfinden möchten, und schauen daher auf Design Patterns - die Lehren, die diejenigen gezogen haben, die mit denselben Problemen konfrontiert waren. Mit Design Patterns können Sie die Best Practices und Erfahrungen anderer nutzen, um Ihre Zeit mit ... etwas anderem zu verbringen. Etwas herausfordernderes. Etwas komplexeres. Etwas mehr Spaß.

Sie möchten wissen, welche Muster wichtig sind - warum Sie sie verwenden, wann Sie sie verwenden, wie Sie sie verwenden (und wann Sie sie NICHT verwenden). Aber Sie möchten nicht nur sehen, wie Muster in einem Buch aussehen, sondern auch, wie sie "in freier Wildbahn" aussehen. In ihrer Heimatumgebung. Mit anderen Worten, in realen Anwendungen. Sie möchten auch lernen, wie Muster in der Java API) verwendet werden und wie Sie die integrierte Musterunterstützung von Java in Ihrem eigenen Code nutzen können.

Sie möchten die wirklichen OO Designprinzipien und warum alles, was Ihr Chef Ihnen über die Vererbung erzählt hat, falsch sein könnte (und was stattdessen zu tun ist). Sie möchten lernen, wie diese Prinzipien beim nächsten Mal helfen Sie sind einen Bach ohne Designmuster.

Am wichtigsten ist, dass Sie die "geheime Sprache" von Design Patterns lernen möchten, damit Sie mit Ihrem Kollegen mithalten können (und Cocktailparty-Gäste beeindrucken können), wenn er beiläufig seine erstaunlich clevere Verwendung von Command, Facade, Proxy und erwähnt Fabrik zwischen einem Schluck Martini. Sie werden leicht mit Ihrem tiefen Verständnis kontern können, warum Singleton nicht so einfach ist, wie es sich anhört, wie die Fabrik so oft missverstanden wird oder wie die Beziehung zwischen Dekorateur, Fassade und Adapter wirklich ist.

Mit Head First Design Patterns vermeiden Sie die Verlegenheit zu denken, dass Decorator etwas aus der Show "Trading Spaces" ist ...

23
Gordon

Ja, es gibt ein bekanntes Buch über Entwurfsmuster: Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software und die Autoren werden oft als "Gang of Four" (GoF) bezeichnet und in fast allen referenziert Texte über Designmuster.

10
Jonas

Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software

alt text

Von Wikipedia :

Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software ist ein Softwareentwicklungsbuch, das wiederkehrende Lösungen für häufig auftretende Probleme beim Softwareentwurf beschreibt. Die Autoren des Buches sind Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides mit einem Vorwort von Grady Booch. Die Autoren werden oft als Gang of Four, GoF oder Go4 bezeichnet. Das Buch ist in zwei Teile gegliedert, wobei die ersten beiden Kapitel die Fähigkeiten und Fallstricke der objektorientierten Programmierung untersuchen und die verbleibenden Kapitel 23 klassische Software-Designmuster beschreiben. Das Buch enthält Beispiele in C++ und Smalltalk.

9
Piers Myers

Eine der besten Websites für Designmuster ist Ward's Wiki, das allererste Wiki. Siehe http://c2.com/cgi/wiki?HistoryOfPatterns für eine gute Startseite.

Im Jahr 1987 berieten sich Ward und Kent mit der Semiconductor Test Systems Group von Tektronix, die Probleme bei der Fertigstellung eines Entwurfs hatte. Sie beschlossen, das Mustermaterial auszuprobieren, das sie studiert hatten. Wie Alexander, der sagte, die Bewohner eines Gebäudes sollten es entwerfen, ließen Ward und Kent Vertreter der Benutzer (einen Trainer und einen Außendiensttechniker) den Entwurf fertigstellen.

Ward entwickelte eine "Sprache" mit fünf Mustern, die den unerfahrenen Designern half, die Stärken von Smalltalk zu nutzen und seine Schwächen zu vermeiden ...

Ward und Kent waren erstaunt über die (zugegebenermaßen spartanische) Eleganz der von ihren Benutzern entworfenen Benutzeroberfläche. Sie berichteten über die Ergebnisse dieses Experiments bei OOPSLA 87 in Orlando. Sie schrieben eine Panel-Position auf und präsentierten in Norm Kerths Workshop über Woher kommen Objekte? Sie sprachen über Muster, bis sie blau im Gesicht waren, und Ich habe viel Einigkeit erzielt, aber ohne konkretere Muster hat sich niemand angemeldet.

In der Zwischenzeit war Erich Gamma im Rahmen seiner Doktorarbeit damit beschäftigt, über objektorientiertes Design in ET ++ zu schreiben und nachzudenken. Erich hatte erkannt, dass wiederkehrende Designstrukturen oder Muster wichtig waren. Die Frage war wirklich, wie man sie erfasst und kommuniziert.

Bruce Anderson hielt einen Vortrag bei TOOLS 90, bei dem ErichGamma anwesend war; Erich gefiel das Gespräch. Bruce hielt einen Vortrag bei EcoopOopsla90 (Ottawa) und leitete eine BOF mit dem Namen Toward a Architecture Handbook , in der er, Erich Gamma, Richard Helm und andere in Diskussionen gerieten über Muster. Dies war das erste Mal, dass Richard und Erich sich trafen, und sie stellten fest, dass sie gemeinsame Ideen zu den Schlüsselideen für das Schreiben von wiederverwendbarer Software teilten OO Software).

Kurz vor ECOOP'91 stellten Erich Gamma und Richard Helm, die an einem heißen Sommertag auf einem Dach in Zürich saßen, die sehr bescheidenen Anfänge des Musterkatalogs zusammen, der schließlich zu DesignPatterns werden sollte ...

Bei dem OOPSLA-Workshop, den Bruce 1991 leitete, ging es richtig los. Zufälligerweise waren Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides alle da; Sie wurden später die Viererbande , die das Design Patterns Buch verfasste ...

3
Gaurav

Ich denke, dass das Refactoring to Patterns einfach nützlich sein kann, weil es beschreibt, wie bestimmte Entwürfe/Codes für Muster im GoF-Buch umgestaltet werden können. Dies kann helfen, die anfängliche Lernkurve zu überwinden. Oh und es geht auch um 'Pattern-Glück' :)

Möglicherweise sind auch die ersten drei Bände der musterorientierten Softwarearchitektur eine gute Lektüre.

2
finrod

Wenn Sie sich speziell für Entwurfsmuster in C++ interessieren, versuchen Sie Modern C++ Design von Andrei Alexandrescu.

In diesem Buch wird erläutert, wie häufig verwendete Muster wie Factory, Singleton und Visitor in C++ implementiert werden. Es wird auch über sehr C++ - spezifische Themen wie intelligente Zeiger, Metaprogrammierung von Vorlagen und richtlinienbasiertes Klassendesign gesprochen.

Der Buchautor ist ein maßgeblicher Experte , bekannt für seine

pionierarbeit zum richtlinienbasierten Design, implementiert durch Template-Metaprogrammierung. Diese Ideen sind in seinem Buch Modern C++ Design artikuliert und wurden zuerst in seiner Programmierbibliothek Loki implementiert. Er implementierte auch das Konzept "Konstruktoren verschieben" in seiner MOJO-Bibliothek. Er trug zum C/C++ Users Journal unter der Überschrift "Generic <Programming>" bei ...

1
Dima

Das ursprüngliche Buch "Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software" ist eine gute Ressource für objektorientierte Entwurfsmuster.

Es gibt viele andere Bücher da draußen. Wenn ich eine Kurzreferenz benötige und mein GoF-Buch nicht erreichbar ist, verfügt Wikipedia normalerweise über genügend Informationen zu diesen und anderen Entwurfsmustern.

Das sind die primären, die ich benutze. Es sollte auch beachtet werden, dass Leute begonnen haben, das Musterformat auf andere Dinge anzuwenden, wie zum Beispiel das Projektmanagement.

Wenn Sie mehr über Antipatterns erfahren möchten, die Sie kennen sollten, gibt es zwei Bücher: "AntiPatterns: Refactoring-Software, Architekturen und Projekte in der Krise" sowie "Refactoring: Verbessern des Designs vorhandenen Codes", die einen Abschnitt enthalten Code riecht, ein anderer Name für Antimuster.

1
indyK1ng

Entwurfsmuster

Diese Tutorial-Site enthält die folgenden Unterabschnitte

  • Absicht jedes Entwurfsmusters
  • Reale Struktur für das Entwurfsmuster
  • Eine Problemstellung
  • Detaillierte Diskussion zum Problem
  • Checkliste, wie man zu einem Muster kommt
  • Faustregeln beim Erreichen des Musters.
  • Codefragmente für das Entwurfsmuster, das C #, C++, Delphi, Java und PHP) enthält

Diese Website enthält auch Anleitungen zu Anti-Patterns, UML und Refactoring.

1
pramodc84

"Agile Prinzipien, Muster und Praktiken in C #" von Robert C. Martin. Ich denke, er hat auch eine Java Version des Buches).

Auch kein Muster selbst, aber Domain Driven Design hat einige großartige Konzepte, auch wenn Sie sich nicht für den vollständigen DDD-Ansatz entscheiden.

  * Ubiquitous Language
  * Code first approach (vs. DB first)
  * etc.
1
Kevin Nelson