<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Entwurfsmuster</id>
	<title>Entwurfsmuster - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Entwurfsmuster"/>
	<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Entwurfsmuster&amp;action=history"/>
	<updated>2026-05-16T20:35:54Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Demo Wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://demowiki.knowlus.com/index.php?title=Entwurfsmuster&amp;diff=8253&amp;oldid=prev</id>
		<title>2A02:2454:87A3:6500:947B:D398:58D2:E350: /* Liste von Mustern */</title>
		<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Entwurfsmuster&amp;diff=8253&amp;oldid=prev"/>
		<updated>2025-05-14T21:11:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Liste von Mustern&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Dieser Artikel|behandelt die Lösungsschablonen für wiederkehrende Entwurfsprobleme. Für das gleichnamige Buch siehe [[Entwurfsmuster (Buch)]].}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Entwurfsmuster&amp;#039;&amp;#039;&amp;#039; ({{enS|design patterns}}) sind bewährte Lösungsschablonen für wiederkehrende Entwurfsprobleme sowohl in der [[Architektur]] als auch in der [[Softwarearchitektur]] und [[Softwaretechnik|-entwicklung]]. Sie stellen damit eine wiederverwendbare Vorlage zur Problemlösung dar, die in einem bestimmten Zusammenhang einsetzbar ist. In den letzten Jahrzehnten hat der Ansatz der Entwurfsmuster auch zunehmendes Interesse in weiteren Bereichen gefunden, beispielsweise in der [[Mensch-Computer-Interaktion]], dem [[Webdesign]] und dem [[Game-Design]] sowie der [[Pädagogik]] und [[Didaktische Muster|Didaktik]], insbesondere dem [[E-Learning]].&amp;lt;ref&amp;gt;https://hillside.net/patterns/patterns-catalog&amp;lt;/ref&amp;gt; Ursprünglich wurde der Begriff in der Architektur von [[Christopher Alexander]] verwendet.&amp;lt;ref name=&amp;quot;Zeller&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Arten von Entwurfsmustern ==&lt;br /&gt;
[[Datei:Prototyp.svg|mini|420px|Das Entwurfsmuster &amp;#039;&amp;#039;Prototyp&amp;#039;&amp;#039; mit der [[Unified Modeling Language]] (UML)]]&lt;br /&gt;
Es gibt verschiedene Typen von Entwurfsmustern. Ursprünglich wurden folgende Typen vom Autorenquartett [[Entwurfsmuster (Buch)|Gang of Four]] (GoF)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt; unterschieden:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[Erzeugungsmuster]] (&amp;#039;&amp;#039;{{lang|en|Creational Patterns}}&amp;#039;&amp;#039;)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: Dienen der Erzeugung von Objekten. Sie entkoppeln die Konstruktion eines Objekts von seiner Repräsentation. Die Objekterzeugung wird gekapselt und ausgelagert, um den Kontext der Objekterzeugung unabhängig von der konkreten Implementierung zu halten, gemäß der Regel: „Programmiere auf die Schnittstelle, nicht auf die Implementierung!“&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[Strukturmuster]] (&amp;#039;&amp;#039;{{lang|en|Structural Patterns}}&amp;#039;&amp;#039;)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: Erleichtern den Entwurf von Software durch vorgefertigte Schablonen für Beziehungen zwischen Klassen.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[Verhaltensmuster (Software)|Verhaltensmuster]] (&amp;#039;&amp;#039;{{lang|en|Behavioral Patterns}}&amp;#039;&amp;#039;)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: Modellieren komplexes Verhalten der Software und erhöhen damit die Flexibilität der Software hinsichtlich ihres Verhaltens.&lt;br /&gt;
&lt;br /&gt;
Später kamen noch weitere Typen für diejenigen Entwurfsmuster, die in keine der drei genannten Typen passten, hinzu. Darunter beispielsweise:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Muster für [[objektrelationale Abbildung]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: Dienen der Ablage und dem Zugriff von Objekten und deren Beziehungen in einer relationalen Datenbank.&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[Nachrichtenübermittlungsmuster]] (&amp;#039;&amp;#039;{{lang|en|Messaging Patterns}}&amp;#039;&amp;#039;)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: Für die Erstellung, die Weiterleitung und die Umwandlung von Daten in Form von Nachrichten, inklusive der dazu benötigten Nachrichtenkanäle und Nachrichtenendpunkte, sowie Komponenten für die Systemverwaltung.&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
&lt;br /&gt;
Ein Ansatz für Entwurfsmuster wurde vom Architekten [[Christopher Alexander]] 1964 in &amp;#039;&amp;#039;Notes on the synthesis of form&amp;#039;&amp;#039; dargestellt. Zwischen 1977 und 1979 stellte er dann (in einer auf [[Vitruv]] zurückgehenden Tradition) eine Sammlung von Entwurfsmustern zusammen.&amp;lt;ref name=&amp;quot;Alexander&amp;quot; /&amp;gt; Die Hauptaufgabe dieser Muster war es, die Bewohner der zu bauenden Strukturen in den Entwurfsprozess mit einzubinden. In der Architektur hat sich diese Idee jedoch bei weitem nicht so verbreitet wie später in der Softwareentwicklung.&lt;br /&gt;
&lt;br /&gt;
[[Kent Beck]] und [[Ward Cunningham]] griffen 1987 die Ideen Alexanders aus der Architektur auf und entwickelten Entwurfsmuster für die Erstellung von [[Grafische Benutzeroberfläche|grafischen Benutzeroberflächen]] in [[Smalltalk (Programmiersprache)|Smalltalk]]. Ein Jahr später begann [[Erich Gamma]] mit seiner Promotion an der [[Universität Zürich]] über die generelle Übertragung dieser Methode auf die Softwareentwicklung. Parallel dazu arbeitete [[James Coplien]] in den Jahren 1989 bis 1991 an musterähnlichen [[Idiom (Softwaretechnik)|Idiomen]] für [[C++]] und veröffentlichte 1991 sein Buch &amp;#039;&amp;#039;Advanced C++ Idioms&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Erich Gamma beendete im selben Jahr seine Promotion und ging im Anschluss in die [[Vereinigte Staaten|Vereinigten Staaten]]. Dort brachte er 1994 zusammen mit [[Richard Helm]], [[Ralph Johnson]] und [[John Vlissides]] das Buch [[Entwurfsmuster (Buch)|&amp;#039;&amp;#039;Design Patterns – Elements of Reusable Object-Oriented Software&amp;#039;&amp;#039;]] heraus, in dem 23 Entwurfsmuster beschrieben sind. Die vier Autoren sind unter Entwicklern weltweit auch unter ihrem Spitznamen &amp;#039;&amp;#039;Gang of Four&amp;#039;&amp;#039; (&amp;#039;&amp;#039;Viererbande&amp;#039;&amp;#039;), kurz &amp;#039;&amp;#039;GoF&amp;#039;&amp;#039;, bekannt und verhalfen mit ihrem Buch den Entwurfsmustern zu einem Durchbruch. Gelegentlich wird &amp;#039;&amp;#039;GoF&amp;#039;&amp;#039; auch als Verweis auf das besagte Buch verwendet. Anders als Alexander, der seine Muster vor allem für Laien geschrieben hatte, richten sich die GoF-Muster an [[Softwareentwickler]] und nicht an Benutzer.&lt;br /&gt;
&lt;br /&gt;
== Anforderungen und Nutzen ==&lt;br /&gt;
&lt;br /&gt;
Ein gutes Muster sollte:&lt;br /&gt;
* ein oder mehrere [[Problemlösen|Probleme lösen]],&lt;br /&gt;
* ein erprobtes Konzept bieten,&lt;br /&gt;
* auf realen Designs basieren,&lt;br /&gt;
* mehr Vorteile als Nachteile aufweisen&lt;br /&gt;
* über das rein Offensichtliche hinausgehen,&lt;br /&gt;
* den Benutzer in den Entwurfsprozess einbinden,&lt;br /&gt;
* [[Relation (Philosophie)|Beziehungen]] aufzeigen, die tiefergehende Strukturen und Mechanismen eines [[System]]s umfassen.&lt;br /&gt;
&lt;br /&gt;
Entwurfsmuster beinhalten in der Regel Referenzen auf andere Muster. Mithilfe dieser ist es möglich, [[Mustersprache]]n zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
Der primäre Nutzen eines Entwurfsmusters liegt in der Beschreibung einer Lösung für eine bestimmte Klasse von Entwurfsproblemen. Weiterer Nutzen ergibt sich aus der Tatsache, dass jedes Muster einen Namen hat. Dies vereinfacht die Diskussion unter Entwicklern, da man abstrakt über eine Struktur sprechen kann. So sind etwa Software-Entwurfsmuster – im Gegensatz zu [[Idiom (Softwaretechnik)|Idiomen]] – zunächst einmal unabhängig von der konkreten Programmiersprache.&lt;br /&gt;
&lt;br /&gt;
Wenn der Einsatz von Entwurfsmustern dokumentiert wird, ergibt sich ein weiterer Nutzen dadurch, dass durch die Beschreibung des Musters ein Bezug zur dort vorhandenen Diskussion des Problemkontextes und der Vor- und Nachteile der Lösung hergestellt wird.&lt;br /&gt;
&lt;br /&gt;
== Nachteile ==&lt;br /&gt;
&lt;br /&gt;
Der erfolgreiche Einsatz von Entwurfsmustern in der Vergangenheit kann dazu verleiten, die Entwurfsmuster als Wunderwaffe und Garant für gutes Design anzusehen. Unerfahrene Entwickler können geneigt sein, möglichst viele bekannte Muster zu verwenden, und dabei übersehen, dass in ihrem Fall vielleicht eine elegantere Lösung ohne den Einsatz von Mustern möglich wäre. Entwurfsmuster garantieren nicht, dass der Entwurf gut ist. Insofern ist die Anwendung zu vieler oder ungeeigneter Entwurfsmuster ein [[#Antimuster|Antimuster]].&lt;br /&gt;
&lt;br /&gt;
== Musterkataloge ==&lt;br /&gt;
Entwurfsmuster werden üblicherweise nach dem Vorbild der Bücher von [[Christopher Alexander]] und der Gang of Four in sogenannten Musterkatalogen (englisch „Design Pattern Catalogs“) gesammelt. Diese beschreiben die einzelnen Muster katalogartig anhand ihrer Eigenschaften. Diese Eigenschaften sind beispielsweise beim Buch &amp;#039;&amp;#039;Design Patterns – Elements of Reusable Object-Oriented Software&amp;#039;&amp;#039; folgende: Aufgabe, Andere Namen, Motivation, Anwendbarkeit, Struktur, Teilnehmer, Kollaborationen, Konsequenzen, Implementierung, Beispielcode, bekannte Verwendungen, verwandte Muster.&lt;br /&gt;
&lt;br /&gt;
Neben dem Entwurfsmusterkatalog der Gang of Four mit den oben genannten Erzeugungsmustern, Strukturmustern und Verhaltensmustern, gibt es eine Reihe weiterer Kataloge. Zu diesen zählen die Bücher &amp;#039;&amp;#039;Enterprise Integration Patterns&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Patterns of Enterprise Application Architecture&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Pattern-Oriented Software Architecture, Volume 1, A System of Patterns&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Refactoring To Patterns&amp;#039;&amp;#039; sowie die &amp;#039;&amp;#039;Core J2EE Patterns&amp;#039;&amp;#039;. (Siehe dazu auch Abschnitt [[#Literatur|Literatur]] unten.)&lt;br /&gt;
&lt;br /&gt;
=== Liste von Mustern ===&lt;br /&gt;
&lt;br /&gt;
Die folgende Liste enthält Entwurfsmuster der [[Entwurfsmuster (Buch)|Gang of Four]], funktionale Verhaltensmuster von Stuart Sierra&amp;lt;ref name=&amp;quot;Sierra&amp;quot;&amp;gt;Stuart Sierra – Functional Design Patterns&amp;lt;/ref&amp;gt; sowie andere Entwurfsmuster aus anderen Katalogen. Die ersten drei Abschnitte stellen die Teilmengen dar, in die die Entwurfsmuster im Buch &amp;#039;&amp;#039;Design Patterns&amp;#039;&amp;#039; kategorisiert wurden. Der vierte Abschnitt enthält Muster für die [[objektrelationale Abbildung]] die insbesondere von [[Martin Fowler]] geprägt wurden.&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt; Der fünfte Abschnitt enthält Entwurfsmuster für die Kommunikation zwischen Anwendungen, die von Gregor Hope und Bobby Woolf im Buch &amp;#039;&amp;#039;Enterprise Integration Patterns&amp;#039;&amp;#039;&amp;lt;ref name=&amp;quot;EIP-Book&amp;quot; /&amp;gt; beschrieben wurden. Der sechste Abschnitt enthält Entwurfsmuster, die sich in keine der ersten fünf Abschnitte einordnen lassen. Die Liste ist nicht vollständig und überschneidet sich teilweise mit [[Architekturmuster]]n.&lt;br /&gt;
&lt;br /&gt;
{{Mehrspaltige Liste&lt;br /&gt;
|breite = 20em&lt;br /&gt;
|liste = &amp;#039;&amp;#039;&amp;#039;1. Erzeugungsmuster&amp;#039;&amp;#039;&amp;#039; {{nowrap|&amp;amp;emsp;({{enS|creational patterns}})}}&lt;br /&gt;
* [[Abstrakte Fabrik]] (&amp;#039;&amp;#039;Abstract factory&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Erbauer (Entwurfsmuster)|Erbauer]] (&amp;#039;&amp;#039;Builder&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Fabrikmethode]] (&amp;#039;&amp;#039;Factory method&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Multiton]] (&amp;#039;&amp;#039;Multiton&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Prototyp (Entwurfsmuster)|Prototyp]] (&amp;#039;&amp;#039;Prototype&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Singleton (Entwurfsmuster)|Singleton]] (&amp;#039;&amp;#039;Singleton&amp;#039;&amp;#039;)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;2. Strukturmuster&amp;#039;&amp;#039;&amp;#039; {{nowrap|&amp;amp;emsp;({{enS|structural design patterns}})}}&lt;br /&gt;
* [[Container (Entwurfsmuster)|Container]] (&amp;#039;&amp;#039;Container&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Decorator|Dekorierer]] (&amp;#039;&amp;#039;Decorator&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Fassade (Entwurfsmuster)|Fassade]] (&amp;#039;&amp;#039;Facade&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Fliegengewicht (Entwurfsmuster)|Fliegengewicht]] (&amp;#039;&amp;#039;Flyweight&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Kompositum (Entwurfsmuster)|Kompositum]] (&amp;#039;&amp;#039;Composite oder Whole-Part&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Stellvertreter (Entwurfsmuster)|Stellvertreter]] (&amp;#039;&amp;#039;Proxy&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Half Object Plus Protocol]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3. Verhaltensmuster &amp;#039;&amp;#039;&amp;#039; {{nowrap|&amp;amp;emsp;({{enS|&amp;#039;&amp;#039;behavioral&amp;amp;nbsp;design&amp;amp;nbsp;patterns&amp;#039;&amp;#039;}})}}&lt;br /&gt;
* [[Besucher (Entwurfsmuster)|Visitor]] (&amp;quot;Visitor&amp;quot;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Interceptor (Entwurfsmuster)|Interceptor]] (&amp;#039;&amp;#039;Interceptor&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Interpreter (Entwurfsmuster)|Interpreter]] (&amp;#039;&amp;#039;Interpreter&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Iterator (Entwurfsmuster)|Iterator]] (&amp;#039;&amp;#039;Iterator&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Kommando (Entwurfsmuster)|Kommando]] (&amp;#039;&amp;#039;Command&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Memento (Entwurfsmuster)|Memento]] (&amp;#039;&amp;#039;Memento&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Beobachter (Entwurfsmuster)|Beobachter]] (&amp;#039;&amp;#039;Observer&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Nullobjekt (Entwurfsmuster)|Nullobjekt]] (&amp;#039;&amp;#039;Null Object&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Schablonenmethode]] (&amp;#039;&amp;#039;Template method&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Strategie (Entwurfsmuster)|Strategie]] (&amp;#039;&amp;#039;Strategy&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Vermittler (Entwurfsmuster)|Vermittler]] (&amp;#039;&amp;#039;Mediator&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Zustand (Entwurfsmuster)|Zustand]] (&amp;#039;&amp;#039;State&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Zuständigkeitskette]] (&amp;#039;&amp;#039;Chain of responsibility&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;GoF&amp;quot; /&amp;gt;&lt;br /&gt;
* [[State/Event]]&amp;lt;ref name=&amp;quot;Sierra&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Consequences]]&amp;lt;ref name=&amp;quot;Sierra&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Accumulator]]&amp;lt;ref name=&amp;quot;Sierra&amp;quot; /&amp;gt;&lt;br /&gt;
* [[MapReduce]]&amp;lt;ref name=&amp;quot;Sierra&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Reduce/Combine]]&amp;lt;ref name=&amp;quot;Sierra&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Rekursive Erweiterung]]&amp;lt;ref name=&amp;quot;Sierra&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Software Pipelining]]&amp;lt;ref name=&amp;quot;Sierra&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Prozess Wrapper]]&amp;lt;ref name=&amp;quot;Sierra&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Software-Token|Token]]&amp;lt;ref name=&amp;quot;Sierra&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Page Object]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;4. Muster für [[objektrelationale Abbildung]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [[Transferobjekt|Datentransferobjekt]] (&amp;#039;&amp;#039;Data transfer object&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Table Data Gateway]]&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Row Data Gateway]]&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Active Record]]&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Unit of Work]]&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Identity Map]]&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Lazy Loading]]&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Identity Field]]&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Dependent Mapping]]&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Embedded Value (Entwurfsmuster)|Embedded Value]]&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Serialized LOB]]&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Inheritance Mapper]]&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Metadata Mapping]]&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Query Object]]&amp;lt;ref name=&amp;quot;PoEAA&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Command-Query-Responsibility-Segregation]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;5. Nachrichtenübermittlungsmuster&amp;#039;&amp;#039;&amp;#039; {{nowrap|&amp;amp;emsp;({{enS|Messaging Patterns}})}}&lt;br /&gt;
* [[Messaging Mapper]]&lt;br /&gt;
* [[Transactional Client]]&lt;br /&gt;
* [[Polling Consumer]]&lt;br /&gt;
* [[Event-driven Consumer]]&lt;br /&gt;
* [[Competing Consumers]]&lt;br /&gt;
* [[Message Dispatcher]]&lt;br /&gt;
* [[Selective Consumer]]&lt;br /&gt;
* [[Durable Subscriber]]&lt;br /&gt;
* [[Idempotent Receiver]]&lt;br /&gt;
* [[Service Activator]]&lt;br /&gt;
* [[Message (Entwurfsmuster)|Message]]&lt;br /&gt;
* [[Command Message]]&lt;br /&gt;
* [[Document Message]]&lt;br /&gt;
* [[Event Message]]&lt;br /&gt;
* [[Request-Reply]]&lt;br /&gt;
* [[Return Address]]&lt;br /&gt;
* [[Correlation Identifier]]&lt;br /&gt;
* [[Message Sequence]]&lt;br /&gt;
* [[Message Expiration]]&lt;br /&gt;
* [[Format Indicator]]&lt;br /&gt;
* [[Message Channel]]&lt;br /&gt;
* [[Point-to-Point Channel]]&lt;br /&gt;
* [[Publisher-Subscriber Channel]]&lt;br /&gt;
* [[Datatype Channel]]&lt;br /&gt;
* [[Invalid Message Channel]]&lt;br /&gt;
* [[Dead Letter Channel]]&lt;br /&gt;
* [[Guaranteed Delivery]]&lt;br /&gt;
* [[Channel Adapter]]&lt;br /&gt;
* [[Messaging Bridge]]&lt;br /&gt;
* Message Bus&lt;br /&gt;
* [[Pipes-and-Filters]]&lt;br /&gt;
* [[Message Router]]&lt;br /&gt;
* [[Content-based Router]]&lt;br /&gt;
* [[Message Filter]]&lt;br /&gt;
* [[Dynamic Router]]&lt;br /&gt;
* [[Recipient List]]&lt;br /&gt;
* Splitter&lt;br /&gt;
* [[Aggregator]]&lt;br /&gt;
* [[Resequencer]]&lt;br /&gt;
* [[Composed Message Processor]]&lt;br /&gt;
* [[Scatter-Gather]]&lt;br /&gt;
* [[Routing Slip]]&lt;br /&gt;
* [[Process Manager]]&lt;br /&gt;
* [[Message Broker]]&lt;br /&gt;
* [[Message Translator]]&lt;br /&gt;
* [[Envelope Wrapper]]&lt;br /&gt;
* [[Content Enricher]]&lt;br /&gt;
* [[Content Filter]]&lt;br /&gt;
* [[Claim Check]]&lt;br /&gt;
* [[Normalizer]]&lt;br /&gt;
* [[Canonical Data Model]]&lt;br /&gt;
* [[Control Bus]]&lt;br /&gt;
* Detour&lt;br /&gt;
* [[Wire Tap]]&lt;br /&gt;
* [[Message History]]&lt;br /&gt;
* [[Message Store]]&lt;br /&gt;
* [[Smart Proxy]]&lt;br /&gt;
* [[Test Message]]&lt;br /&gt;
* [[Channel Purger]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;6. Weitere Muster&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [[Extension Interface]]&lt;br /&gt;
* [[Fluent Interface]]&lt;br /&gt;
* [[Business Delegate]]&lt;br /&gt;
* [[Inversion of Control]]&lt;br /&gt;
* [[Transaction Script]]&lt;br /&gt;
* [[Table Module]]&lt;br /&gt;
* [[Page Controller]]&lt;br /&gt;
* [[Template View]]&lt;br /&gt;
* [[Transform View]]&lt;br /&gt;
* [[Two-Step View]]&lt;br /&gt;
* [[Application Controller]]&lt;br /&gt;
* [[Remote Facade]]&lt;br /&gt;
* [[Lock]]s&lt;br /&gt;
* [[Session State]]s&lt;br /&gt;
* [[Repository (Entwurfsmuster)|Repository]]&lt;br /&gt;
* [[Value Object]]&lt;br /&gt;
* [[Registry (Entwurfsmuster)|Registry]]&lt;br /&gt;
* [[Attributbasierte Zugriffskontrolle]]&lt;br /&gt;
* [[Role Based Access Control]]&lt;br /&gt;
* [[Enterprise Integration Patterns]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Andere Arten von Mustern ==&lt;br /&gt;
Die Arbeiten der [[Entwurfsmuster (Buch)|Gang of Four]] haben viele Autoren zu weiteren Veröffentlichungen angeregt. Daraus entstand auch die Problematik, dass ein Muster sich nicht mehr ohne weiteres als Entwurfsmuster klassifizieren lässt. Vielmehr gibt es graduelle Unterschiede in der [[Software-Granularität|Granularität]] von Mustern. So wird etwa das [[Model View Controller|Model-View-Controller]]-Muster (MVC) manchmal als [[Architekturmuster]], manchmal als Entwurfsmuster eingesetzt.&amp;lt;ref&amp;gt;{{cite web |url=http://www.swview.org/blog/mvc-design-pattern-or-architectural-pattern |title=Is MVC a design pattern or an architectural pattern? | author=Kamal Wickramanayake |date=2010-07-17 |language=englisch |work=Software View |accessdate=2016-12-16}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiele für [[Muster]], die keine Entwurfsmuster sind:&lt;br /&gt;
&lt;br /&gt;
* [[Analysemuster]] charakterisieren typische Fälle der [[Anforderungserhebung|Anforderungsanalyse]].&lt;br /&gt;
* [[Architekturmuster]] beschreiben typische [[Softwarearchitektur]]en.&lt;br /&gt;
* [[Idiom (Softwaretechnik)|Idiome]] sind unterhalb der Ebene des Entwurfs bei der Programmierung auftretende Muster.&lt;br /&gt;
* Kommunikationsmuster beziehen sich auf die Kommunikationswege zwischen Personen einer Organisation.&lt;br /&gt;
* [[Organisationsmuster]] beschreiben Elemente der Strukturen von Organisationen.&lt;br /&gt;
* [[Anti-Pattern|Antimuster]] beschreiben, „wie man es &amp;#039;&amp;#039;nicht&amp;#039;&amp;#039; machen sollte.“&lt;br /&gt;
* [[Integrationsmuster]] beschreiben die Kommunikation zwischen unterschiedlichen Systemen, bzw. zwischen Komponenten innerhalb eines Systems.&lt;br /&gt;
* [[SOA-Muster]] beschreiben den Aufbau [[Serviceorientierte Architektur|serviceorientierter Architekturen]].&lt;br /&gt;
* [[Didaktische Muster]] für Dokumentation und Klassifikation von Lösungen wiederkehrender Probleme in Lehr-/Lernsituationen.&lt;br /&gt;
&lt;br /&gt;
== Antimuster ==&lt;br /&gt;
&lt;br /&gt;
{{Hauptartikel|Anti-Pattern}}&lt;br /&gt;
Wo Entwurfsmuster in der Software-Entwicklung allgemein übliche und bekannte Lösungsansätze sind, um Probleme zu lösen, so sind Antimuster Negativ-Beispiele von bereits durchgeführten Lösungen, die Hinweise darauf geben, welche Fehler vermieden werden sollten.&lt;br /&gt;
&lt;br /&gt;
Nachdem bei der Softwareentwicklung immer mehr von positiven Erfahrungen von erfolgreich abgeschlossenen Aufgabenstellungen profitiert wurde, konzentrierte man sich auch darauf, die Negativbeispiele, also wiederkehrende Fehler bei der Software-Entwicklung, zu identifizieren und zu dokumentieren.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Smart UI]]&lt;br /&gt;
* [[Wiki#„WikiWikiWeb“|Entwurfsmuster und die Entstehung des Wikis]]&lt;br /&gt;
* [[Objektorientierte Programmierung]]&lt;br /&gt;
* [[Plugin (Entwurfsmuster)]]&lt;br /&gt;
* [[Prinzipien objektorientierten Designs]]&lt;br /&gt;
* [[Prototyp (Technik)]]&lt;br /&gt;
* [[Referenzmodell]]&lt;br /&gt;
* [[Referenzarchitektur]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
;Deutsch&lt;br /&gt;
* Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, [[Michael Stal]]: &amp;#039;&amp;#039;Pattern-orientierte Softwarearchitektur. Ein Pattern-System.&amp;#039;&amp;#039; Addison-Wesley-Longman, Bonn 1998, ISBN 3-8273-1282-5.&lt;br /&gt;
* Helmut Leitner: &amp;#039;&amp;#039;Mustertheorie – Einführung und Perspektiven auf den Spuren von Christopher Alexander&amp;#039;&amp;#039;. Verlag Nausner &amp;amp; Nausner, Graz 2007, ISBN 978-3-901402-50-0.&lt;br /&gt;
* Florian Siebler: &amp;#039;&amp;#039;Design Patterns mit Java: Eine Einführung in Entwurfsmuster.&amp;#039;&amp;#039; Hanser-Verlag, 2014, ISBN 978-3-446-43616-9.&lt;br /&gt;
;Englisch&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=[[Erich Gamma]], [[Richard Helm]], [[Ralph Johnson|Ralph E. Johnson]], [[John Vlissides]]&lt;br /&gt;
   |Titel=[[Entwurfsmuster (Buch)|Entwurfsmuster. Elemente wiederverwendbarer objektorientierter Software]]&lt;br /&gt;
   |Verlag=Addison-Wesley&lt;br /&gt;
   |Ort=München&lt;br /&gt;
   |Datum=2004&lt;br /&gt;
   |ISBN=3-8273-2199-9&lt;br /&gt;
   |Originaltitel=Design Patterns. Elements of Reusable Object-Oriented Software.&lt;br /&gt;
   |Originalsprache=en}}&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=[[Gregor Hohpe]], [[Bobby Woolf]]&lt;br /&gt;
   |Hrsg=Addison-Wesley&lt;br /&gt;
   |Titel=Enterprise Integration Patterns&lt;br /&gt;
   |TitelErg=Designing, Building and Deploying Messaging Solutions&lt;br /&gt;
   |Auflage=1&lt;br /&gt;
   |Verlag=Addison-Wesley&lt;br /&gt;
   |Datum=2003&lt;br /&gt;
   |ISBN=978-0-321-20068-6&lt;br /&gt;
   |Sprache=en&lt;br /&gt;
   |Umfang=480}}&lt;br /&gt;
* [[Wolfgang Pree]]: &amp;#039;&amp;#039;Design Patterns for Object-Oriented Software Development.&amp;#039;&amp;#039; Addison-Wesley, ACM Press, 1994, ISBN 0-201-42294-8. (englisch)&lt;br /&gt;
* [[Martin Fowler]]: &amp;#039;&amp;#039;Patterns of Enterprise Application Architecture.&amp;#039;&amp;#039; Addison-Wesley, 2002, ISBN 0-321-12742-0. (englisch)&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Deepak Alur, John Cupri, Dan Malks&lt;br /&gt;
   |Titel=Core J2EE Patterns: Best Practices and Design Strategies&lt;br /&gt;
   |Verlag=Prentice Hall&lt;br /&gt;
   |Datum=2003&lt;br /&gt;
   |ISBN=978-0-13-142246-9&lt;br /&gt;
   |Seiten=528&lt;br /&gt;
   |Sprache=en&lt;br /&gt;
   |Online=[http://www.oracle.com/technetwork/java/index-138725.html oracle.com]&lt;br /&gt;
   |Abruf=2009-11-22}}&lt;br /&gt;
* Eric Freeman, Elisabeth Freeman: &amp;#039;&amp;#039;Head First Design Patterns.&amp;#039;&amp;#039; O’Reilly, 2004, ISBN 0-596-00712-4. (Deutsche Übersetzung: &amp;#039;&amp;#039;Entwurfsmuster von Kopf bis Fuß.&amp;#039;&amp;#039; O’Reilly, Köln 2006, ISBN 3-89721-421-0.)&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Joshua Kerievsky&lt;br /&gt;
   |Titel=Refactoring To Patterns&lt;br /&gt;
   |Verlag=Addison-Wesley&lt;br /&gt;
   |Datum=2004&lt;br /&gt;
   |ISBN=0-321-21335-1&lt;br /&gt;
   |Seiten=400&lt;br /&gt;
   |Sprache=en&lt;br /&gt;
   |Online=[http://www.industriallogic.com/xp/refactoring/catalog.html Katalog der Patterns]&lt;br /&gt;
   |Abruf=2009-11-22}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Commons|Software design patterns|Entwurfsmuster}}&lt;br /&gt;
{{Wikibooks|Muster|Entwurfsmuster}}&lt;br /&gt;
* [http://wwwswt.informatik.uni-rostock.de/deutsch/Infothek/Entwurfsmuster/patterns/index.html Entwurfsmuster Übersicht]&lt;br /&gt;
* [http://www.philipphauer.de/study/se/design-pattern.php Design Pattern Katalog] mit 10 gängigen Entwurfsmustern&lt;br /&gt;
* [http://c2.com/cgi/wiki?WikiPagesAboutWhatArePatterns &amp;#039;&amp;#039;Wiki Pages About What Are Patterns&amp;#039;&amp;#039;.] [[Portland Pattern Repository]]; Einstiegsseite (englisch)&lt;br /&gt;
* {{Internetquelle |autor=Addy Osmani |url=http://addyosmani.com/resources/essentialjsdesignpatterns/book/ |titel=Learning JavaScript Design Patterns |abruf=2013-05-24 |sprache=en |kommentar=Entwurfsmuster in [[JavaScript]]}}&lt;br /&gt;
* [http://www.cs.helsinki.fi/u/salaakso/patterns/ User Interface Design Patterns]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Alexander&amp;quot;&amp;gt;&lt;br /&gt;
[[Christopher Alexander]], Sara Ishikawa, Murray Silverstein, Max Jacobson, Ingrid Fiksfahl-King, Shlomo Angel: &amp;#039;&amp;#039;Eine Muster-Sprache. Städte, Gebäude, Konstruktion.&amp;#039;&amp;#039; Löcker, Wien 1995, ISBN 3-85409-179-6.&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;EIP-Book&amp;quot;&amp;gt;&lt;br /&gt;
{{Literatur&lt;br /&gt;
 |Autor=[[Gregor Hohpe]], Bobby Woolf&lt;br /&gt;
 |Titel=Enterprise Integration Patterns. Designing, Building and Deploying Messaging Solutions&lt;br /&gt;
 |Verlag=Addison-Wesley&lt;br /&gt;
 |Ort=Boston&lt;br /&gt;
 |Datum=2003&lt;br /&gt;
 |ISBN=0-321-20068-3&lt;br /&gt;
 |Sprache=en}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;GoF&amp;quot;&amp;gt;&lt;br /&gt;
{{Literatur&lt;br /&gt;
 |Autor=[[Erich Gamma]], [[Richard Helm]], [[Ralph Johnson|Ralph E. Johnson]], [[John Vlissides]]&lt;br /&gt;
 |Titel=Entwurfsmuster. Elemente wiederverwendbarer objektorientierter Software&lt;br /&gt;
 |Verlag=Addison-Wesley&lt;br /&gt;
 |Ort=München&lt;br /&gt;
 |Datum=2004&lt;br /&gt;
 |ISBN=3-8273-2199-9&lt;br /&gt;
 |Originaltitel=Design Patterns. Elements of Reusable Object-Oriented Software.&lt;br /&gt;
 |Originalsprache=en}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;PoEAA&amp;quot;&amp;gt;&lt;br /&gt;
{{Literatur&lt;br /&gt;
 |Autor=[[Martin Fowler]]&lt;br /&gt;
 |Titel=Patterns of Enterprise Application Architecture&lt;br /&gt;
 |Verlag=Addison-Wesley-Longman&lt;br /&gt;
 |Ort=Amsterdam&lt;br /&gt;
 |Datum=2002&lt;br /&gt;
 |ISBN=0-321-12742-0}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Zeller&amp;quot;&amp;gt;&lt;br /&gt;
Andreas Zeller: [https://www.st.cs.uni-saarland.de/edu/einst/06-patterns.pdf &amp;#039;&amp;#039;Entwurfsmuster&amp;#039;&amp;#039;] auf st.cs.uni-saarland.de (PDF, S. 2.)&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Navigationsleiste Entwurfsmuster}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwurfsmuster| ]]&lt;br /&gt;
[[Kategorie:Systems Engineering]]&lt;/div&gt;</summary>
		<author><name>2A02:2454:87A3:6500:947B:D398:58D2:E350</name></author>
	</entry>
</feed>