GoF Design Patterns

Details
Vollständiger Name

Gang of Four Design Patterns

Auch bekannt als

Design Patterns, Gang of Four Patterns

Kernkonzepte:

Erzeugungsmuster

Abstract Factory, Builder, Factory Method, Prototype, Singleton — Mechanismen zur Objekterzeugung

Strukturmuster

Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy — Objektkomposition und Beziehungen

Verhaltensmuster

Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor — Objektinteraktion und Verantwortlichkeiten

Pattern-Sprache

Gemeinsames Vokabular zur Kommunikation wiederkehrender Entwurfsprobleme und bewährter Lösungen

Komposition vor Vererbung

Objektkomposition für Flexibilität gegenüber starren Klassenhierarchien bevorzugen

Gegen ein Interface programmieren

Von Abstraktionen abhängen statt von konkreten Implementierungen

Für Veränderung entwerfen

Identifiziere, was sich in deinem Entwurf ändert, und kapsle es

Schlüsselvertreter

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides ("Design Patterns: Elements of Reusable Object-Oriented Software", 1994)

Wann zu verwenden:

  • Objektorientierter Entwurf, der bewährte Lösungen für wiederkehrende Probleme erfordert

  • Kommunikation von Entwurfsentscheidungen mit einem gemeinsamen Vokabular

  • Vermittlung objektorientierter Entwurfsprinzipien anhand konkreter Beispiele

  • Refactoring von Code zur Erhöhung von Flexibilität und Wiederverwendbarkeit

Verwandte Anker:

Kritik:

  • Peter Norvig, "Design Patterns in Dynamic Languages" (1996/1998) — 16 der 23 Patterns haben in Lisp oder Dylan eine "qualitativ einfachere Implementierung" als in C++ oder verschwinden ganz in der Sprache: Viele Patterns kompensieren fehlende Sprachfeatures, statt universelle Designweisheit festzuhalten

  • Paul Graham, "Revenge of the Nerds" (2002) — wiederkehrende Patterns können Belege für den "menschlichen Compiler bei der Arbeit" sein: "When I see patterns in my programs, I consider it a sign of trouble" — ein Zeichen, dass die Abstraktionen der Sprache nicht mächtig genug sind

  • Die Autoren selbst behandeln den Katalog als Momentaufnahme von 1994, nicht als geschlossenen Kanon: Im InformIT-Interview von 2009 diskutieren sie, wie sie ihn heute umbauen und kürzen würden (siehe auch die Kritik bei Singleton)