<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.byte-welt.net/index.php?action=history&amp;feed=atom&amp;title=Design_Pattern</id>
	<title>Design Pattern - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.byte-welt.net/index.php?action=history&amp;feed=atom&amp;title=Design_Pattern"/>
	<link rel="alternate" type="text/html" href="https://wiki.byte-welt.net/index.php?title=Design_Pattern&amp;action=history"/>
	<updated>2026-08-10T03:34:11Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Byte-Welt Wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.byte-welt.net/index.php?title=Design_Pattern&amp;diff=1569&amp;oldid=prev</id>
		<title>Swerflash: 1 Versionen</title>
		<link rel="alternate" type="text/html" href="https://wiki.byte-welt.net/index.php?title=Design_Pattern&amp;diff=1569&amp;oldid=prev"/>
		<updated>2007-06-13T17:15:30Z</updated>

		<summary type="html">&lt;p&gt;1 Versionen&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 13. Juni 2007, 17:15 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;de&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(kein Unterschied)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Swerflash</name></author>
	</entry>
	<entry>
		<id>https://wiki.byte-welt.net/index.php?title=Design_Pattern&amp;diff=1568&amp;oldid=prev</id>
		<title>EagleEye: /* Weblinks */</title>
		<link rel="alternate" type="text/html" href="https://wiki.byte-welt.net/index.php?title=Design_Pattern&amp;diff=1568&amp;oldid=prev"/>
		<updated>2007-02-27T19:26:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Weblinks&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Ein &amp;#039;&amp;#039;&amp;#039;Design Pattern&amp;#039;&amp;#039;&amp;#039; (deutsch &amp;#039;&amp;#039;Entwufsmuster&amp;#039;&amp;#039;) beschreibt eine bewährte Schablone für ein Entwurfsproblem. Es stellt damit eine wiederverwendbare Vorlage zur Problemlösung dar. Entstanden ist der Ausdruck in der Architektur, von der er für die [[Softwareentwicklung]] übernommen wurde. In den letzten Jahren hat der Ansatz der Entwurfsmuster auch zunehmendes Interesse im Bereich der [[Mensch-Computer-Interaktion]] gefunden.&lt;br /&gt;
&lt;br /&gt;
Ein gutes Muster sollte&lt;br /&gt;
* ein oder mehrere [[Problem]]e [[Lösung (Problem)|lösen]],&lt;br /&gt;
* ein erprobtes [[Konzept]] bieten,&lt;br /&gt;
* über das rein Offensichtliche hinausgehen,&lt;br /&gt;
* den Benutzer in den [[Entwurfsprozess]] einbinden,&lt;br /&gt;
* [[Beziehung]]en aufzeigen, die tiefergehende [[Struktur]]en und [[Mechanismus|Mechanismen]] eines [[System]]s umfassen.&lt;br /&gt;
&lt;br /&gt;
Entwurfsmuster beinhalten Referenzen auf andere Muster. Mithilfe dieser ist es möglich, [[Mustersprache]]n zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
&lt;br /&gt;
Der Architekt Christopher Alexander hatte in den 1970er Jahren eine Sammlung von Entwurfsmustern zusammengestellt. Die Hauptaufgabe dieser Muster ist es, die Bewohner der zu bauenden Strukturen in den Entwurfsprozess 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 Benutzungsschnittstellen]] in [[Smalltalk-80|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.&lt;br /&gt;
&lt;br /&gt;
Parallel dazu arbeitete James Coplien in den Jahren 1989 bis 1991 an musterähnlichen [[Idiom (Softwaretechnik)|Idiomen]] für [[Cpp|C++]] und veröffentlichte 1991 sein Buch &amp;#039;&amp;#039;Advanced C++ Idioms&amp;#039;&amp;#039;. Erich Gamma beendete im selben Jahr seine Promotion und ging im Anschluss in die Vereinigten Staaten. Dort brachte er 1995 zusammen mit Richard Helm, Ralph Johnson und John Vlissides das Buch &amp;#039;&amp;#039;Design Patterns - Elements of Reusable Object-Oriented Software&amp;#039;&amp;#039; heraus, in dem 23 Entwurfsmuster beschrieben sind. Diese vier Autoren sind unter Entwicklern auch unter ihrem Spitznamen &amp;#039;&amp;#039;Gang of Four&amp;#039;&amp;#039; (Viererbande, kurz &amp;#039;&amp;#039;GoF&amp;#039;&amp;#039;) bekannt und verhalfen mit ihrem Buch den Entwurfsmustern zu ihrem Durchbruch. Gelegentlich wird &amp;#039;&amp;#039;GoF&amp;#039;&amp;#039; auch als Verweis für das besagte Buch verwendet. Anders als Alexander, der seine Muster vor allem für Laien geschrieben hat, richten sich die GoF-Muster an Programmierer und nicht an Benutzer.&lt;br /&gt;
&lt;br /&gt;
==Nutzen==&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;
== Andere Arten von Mustern ==&lt;br /&gt;
&lt;br /&gt;
Die Arbeiten der 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 u.a. zusammengesetzte Muster, wie das [[Model View Controller|Model-View-Controller]]-Muster (MVC).&lt;br /&gt;
&lt;br /&gt;
Beispiele für [[Muster]], welche keine Entwurfsmuster sind:&lt;br /&gt;
*Analysemuster charakterisieren typische Fälle der [[Anforderungsanalyse]].&lt;br /&gt;
*[[Architekturmuster]] beschreiben typische [[Software-Architektur]]en.&lt;br /&gt;
*[[Idiom (Softwaretechnik)]] 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;
*[[Antimuster]] beschreiben, &amp;quot;wie man es nicht machen sollte.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Einteilung==&lt;br /&gt;
Die meisten Entwurfsmuster lassen sich in 3 Kategorien einteilen:&lt;br /&gt;
*Erzeugung - Entkopplung der Erzeugung/Instanzierung von Objekten&lt;br /&gt;
**[[Abstract Factory (Design Pattern) | Abstract Factory]]&lt;br /&gt;
**[[Builder (Design Pattern) | Builder]]&lt;br /&gt;
**[[Methode Factory (Design Pattern) | Methode Factory]]&lt;br /&gt;
**[[Prototype (Design Pattern) | Prototype]]&lt;br /&gt;
**[[Singleton (Design Pattern) | Singleton]]&lt;br /&gt;
*Verhalten - Entkopplung der Wechselwirkung zwischen Klassen/Objekten&lt;br /&gt;
**[[Chain of Responsibility (Design Pattern) | Chain of Responsibility]]&lt;br /&gt;
**[[Command (Design Pattern) | Command]]&lt;br /&gt;
**[[Interpreter (Design Pattern) | Interpreter]]&lt;br /&gt;
**[[Iterator (Design Pattern) | Iterator]]&lt;br /&gt;
**[[Memento (Design Pattern) | Memento]]&lt;br /&gt;
**[[Mediator (Design Pattern) | Mediator]]&lt;br /&gt;
**[[Model View Controller (Design Pattern) | Model-View-Controller]]&lt;br /&gt;
**[[Observer (Design Pattern) | Observer]]&lt;br /&gt;
**[[State (Design Pattern) | State]]&lt;br /&gt;
**[[Strategy (Design Pattern) | Strategy]]&lt;br /&gt;
**[[Template Method (Design Pattern) | Template Method]]&lt;br /&gt;
**[[Visitor (Design Pattern) | Visitor]]&lt;br /&gt;
*Struktur - Zumsammensetzung von Klassen/Objekten zu größeren Strukturen&lt;br /&gt;
**[[Adapter (Design Pattern) | Adapter]]&lt;br /&gt;
**[[Bridge (Design Pattern) | Bridge]]&lt;br /&gt;
**[[Composite (Design Pattern) | Composite]]&lt;br /&gt;
**[[Decorator (Design Pattern) | Decorator]]&lt;br /&gt;
**[[Facade (Design Pattern) | Facade]]&lt;br /&gt;
**[[Flyweight (Design Pattern) | Flyweight]]&lt;br /&gt;
**[[Proxy (Design Pattern) | Proxy]]&lt;br /&gt;
&lt;br /&gt;
Eine andere Art der Einteilung ist nach [[Klasse]]n und [[Objekt]]en:&lt;br /&gt;
*Klassenmuster - Beziehungen der Klassen, die über Vererbung beschrieben sind&lt;br /&gt;
**[[Adapter (Design Pattern) | Adapter]]&lt;br /&gt;
**[[Methode Factory (Design Pattern) | Methode Factory]]&lt;br /&gt;
**[[Interpreter (Design Pattern) | Interpreter]]&lt;br /&gt;
**[[Template Method (Design Pattern) | Template Method]]&lt;br /&gt;
*Objektmuster - Dynamische Beziehungen der Objekte durch Komposition&lt;br /&gt;
**[[Abstract Factory (Design Pattern) | Abstract Factory]]&lt;br /&gt;
**[[Bridge (Design Pattern) | Bridge]]&lt;br /&gt;
**[[Builder (Design Pattern) | Builder]]&lt;br /&gt;
**[[Chain of Responsibility (Design Pattern) | Chain of Responsibility]]&lt;br /&gt;
**[[Command (Design Pattern) | Command]]&lt;br /&gt;
**[[Composite (Design Pattern) | Composite]]&lt;br /&gt;
**[[Decorator (Design Pattern) | Decorator]]&lt;br /&gt;
**[[Facade (Design Pattern) | Facade]]&lt;br /&gt;
**[[Flyweight (Design Pattern) | Flyweight]]&lt;br /&gt;
**[[Iterator (Design Pattern) | Iterator]]&lt;br /&gt;
**[[Mediator (Design Pattern) | Mediator]]&lt;br /&gt;
**[[Memento (Design Pattern) | Memento]]&lt;br /&gt;
**[[Model View Controller (Design Pattern) | Model-View-Controller]]&lt;br /&gt;
**[[Observer (Design Pattern) | Observer]]&lt;br /&gt;
**[[Prototype (Design Pattern) | Prototype]]&lt;br /&gt;
**[[Proxy (Design Pattern) | Proxy]]&lt;br /&gt;
**[[Singleton (Design Pattern) | Singleton]]&lt;br /&gt;
**[[State (Design Pattern) | State]]&lt;br /&gt;
**[[Strategy (Design Pattern) | Strategy]]&lt;br /&gt;
**[[Visitor (Design Pattern) | Visitor]]&lt;br /&gt;
&lt;br /&gt;
== Antimuster ==&lt;br /&gt;
Wo Entwurfsmuster in der Software-Entwicklung allgemein übliche und bekannte Lösungsansätze sind, um Probleme zu lösen, so sind [[Anti-Pattern]] Negativ-Beispiele von bereits durchgeführten Lösungen, die Hinweise darauf geben, wie die Aufgabenstellung besser gelöst werden könnte und sollte. &lt;br /&gt;
&lt;br /&gt;
Nachdem bei der Software-Entwicklung immer mehr von positiven Erfahrung 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;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
*Erich Gamma, Richard Helm, Ralph E. Johnson: &amp;#039;&amp;#039;Entwurfsmuster. Elemente wiederverwendbarer objektorientierter Software&amp;#039;&amp;#039;, Addison Wesley in Pearson Education Deutschland, 2004, ISBN 3-8273-2199-9&lt;br /&gt;
*Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: &amp;#039;&amp;#039;Design Patterns. Elements of Reusable Object-Oriented Software.&amp;#039;&amp;#039; Addison Wesley, 1995, ISBN 0-201-63361-2&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;
*Jan Borchers: &amp;#039;&amp;#039;A Pattern Approach to Interaction Design.&amp;#039;&amp;#039; John Wiley &amp;amp; Sons, Chichester 2001, ISBN 0-471-49828-9 	 &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;
*James O. Coplien: &amp;#039;&amp;#039;Advanced C++ Programming Styles and Idioms.&amp;#039;&amp;#039; Addison Wesley, 1991, ISBN 0-2015-4855-0 	 &lt;br /&gt;
*Martin Fowler, David Rice, Matthew Foemmel: &amp;#039;&amp;#039;Patterns für Enterprise Application-Architekturen.&amp;#039;&amp;#039; Mitp-Verlag, 2003, ISBN 3-82661-378-3 	 &lt;br /&gt;
*Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann: &amp;#039;&amp;#039;Pattern-orientierte Softwarearchitektur. Muster für nebenläufige und vernetzte Objekte.&amp;#039;&amp;#039; dpunkt, Heidelberg 2002, ISBN 3-89864-142-2&lt;br /&gt;
*Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates: &amp;#039;&amp;#039;Entwurfsmuster von Kopf bis Fuß&amp;#039;&amp;#039;. O&amp;#039;Reilly, 2005, ISBN 3-89721-421-0&lt;br /&gt;
*Klaus Quibeldey-Cirkel: &amp;#039;&amp;#039;Entwurfsmuster. Design Patterns in der objektorientierten Softwaretechnik&amp;#039;&amp;#039; Springer, 1999, ISBN 3-540-65825-4&lt;br /&gt;
*Brandon Goldfedder: &amp;#039;&amp;#039;Entwurfsmuster einsetzen&amp;#039;&amp;#039; Addison-Wesley, 2002, ISBN 3-8273-1983-8&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://c2.com/doc/oopsla87.html Der Artikel von Beck und Cunningham (Englisch)]&lt;br /&gt;
* [http://c2.com/cgi/wiki Das Wikiprinzip aus dem Blickwinkel der Entwurfsmusteransatzes erklärt (Englisch)]&lt;br /&gt;
* [http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html Core Java 2 EE Patterns]&lt;br /&gt;
* [http://www.patterndepot.com/put/8/JavaPatterns.htm The Design Patterns Java Companion]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Design Pattern]]&lt;br /&gt;
{{Wikipedia|Seite=Entwurfsmuster}}&lt;/div&gt;</summary>
		<author><name>EagleEye</name></author>
	</entry>
</feed>