Entwurfsmuster
Architektur
Der Architekt Christopher Alexander hatte in den 1970er Jahren eine Sammlung von Entwurfsmustern zusammengestellt.
Softwareentwicklung
Die Idee der Entwurfsmuster wurde in der Softwareentwicklung aus der Architektur übernommen.
Erich Gamma, Mitte der neunziger Jahre Wissenschaftler an der Hochschule in Zürich, promovierte über die Übertragung dieser Methode auf die Softwareentwicklung. Im Anschluss ging er nach Amerika, wo er zuammen mit Richard Helm, Ralph Johnson und John Vlissides das Buch "Design Patterns - Elements of Reusable Design" herausbrachte. Dieses Autorenquartett hat sich den Spitznamen "Gang of Four" (Viererbande) eingehandelt. GoF wird gelegentlich auch als Verweis für besagtes Buch verwandt.
In der Architektur ist die Idee, Entwurfsmuster zu verwenden aber bei weitem nicht so verbreitet wie in der Softwareentwicklung. Jedes Muster hat einen Namen. Dies vereinfacht die Diskussion unter Softwareentwicklern, da man abstrahiert über eine Softwarestruktur sprechen kann. So sind Entwurfsmuster zunächst einmal sprachunabhängig.
Moderne (insbesondere von Grund auf Objektorientierung unterstützende) Hochsprachen unterstützen jedoch einige der gängigen Entwurfsmuster bereits mit bestimmten Sprachmitteln, so dass man sich in der Praxis vor allem bei der Nutzung moderner Sprachen im Prozess der objektorientierten Analyse (OOA) und des objektorientierten Designs (OOD) der Entwurfsmuster bedient, die dort u.U. noch immer implementationsneutral in der unified modeling language (UML) angewandt werden.
Frameworks
Frameworks sind keine Entwurfsmuster, bedienen sich aber in der Regel dieser zur Lösung domainspezifischer Problemstellungen. Dabei werden zumeist mehrere Muster miteinander kombiniert.
Grundlegende Muster
...sind z.B (nach GoF).
Creational Patterns (Erzeugungsmuster)
Creational Patterns beschreiben Vorgehensmodelle zur Erzeugung von Objekten.
- Abstract Factor, auch Kit
- Builder
- Factory Method, auch Virtual Constructor
- Prototype
- Singleton
Structural Patterns (Strukturmuster)
- Adapter, auch Wrapper
- Bridge, auch Handle/Body
- Composite
- Decorator, auch Wrapper
- Facade
- Flyweight
- Proxy, Surrogate
Behavioral Patterns (Verhaltensmuster)
- Chain of Responsibility
- Command, auch Action, Transaction
- Interpreter
- Iterator, auch Cursor
- Mediator
- Memento, auch Token
- Observer, auch Dependents, Publish-Subscribe
- State, auch Objects for States
- Strategy, auch Policy
- Template Method
- Visitor
nicht elementare Entwurfsmuster
Aus den oben beschriebenen und anderen einfachen Mustern setzt man komplexere Muster zusammen, die auf einem höheren Abstraktionsniveau einen Teil der Problemstellung lösen.
- Model View Controler (MVC)
Weiterführende Angaben
Literatur
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Entwurfsmuster - Elemente wiederverwendbarer objektorientierter Software, Addison Wesley, ISBN 3-89319-950-0
- Christopher Alexander, Sara Ishikawa, Murray Silverstein, Max Jacobson, Ingrid Fiksfahl-King, Shlomo Angel: Eine Muster-Sprache: Städte, Gebäude, Konstruktion, Löcker, ISBN 3-85409-179-6
- Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal: Pattern-orientierte Softwarearchitektur, ein Pattern-System, Addison Wesley 1998, ISBN 3-8273-1282-5
- Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann: Pattern-orientierte Softwarearchitektur, Muster für nebenläufige und vernetzte Objekte, dpunkt 2002, ISBN 3-89864-142-2