Adapter (Entwurfsmuster)
Der Adapter ({{#invoke:Vorlage:lang|full|CODE=en|SCRIPTING=Latn|SERVICE=englisch}}) – auch die Hüllenklasse<ref>{{#switch:
|0|=Vorlage:Toter Link/Core{{#if: http://informatik.unibas.ch/lehre/hs10/cs101/folien/17_GenericProg_oldStyle.pdf | {{#if: Generic Programming without Generics from JAVA5 | Generic Programming without Generics from JAVA5 }} (Seite {{#switch:1|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: 2024-08 | , festgestellt im {{#invoke:DateTime|format|2024-08|F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: RucolaSpacecat | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:1|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: 2024-08 | , festgestellt im {{#invoke:DateTime|format|2024-08|F Y}} }}.) }}{{#switch: 1 |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://informatik.unibas.ch/lehre/hs10/cs101/folien/17_GenericProg_oldStyle.pdf | {{#if:{{#invoke:URLutil|isWebURL|http://informatik.unibas.ch/lehre/hs10/cs101/folien/17_GenericProg_oldStyle.pdf}} || {{#if: || }} }} | {{#if: Generic Programming without Generics from JAVA5 | {{#if: || }} | {{#if: || }} }} }}{{#if: 2024-08 | {{#if:{{#invoke:DateTime|format|2024-08|F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://informatik.unibas.ch/lehre/hs10/cs101/folien/17_GenericProg_oldStyle.pdf Die nachstehende Seite ist {{#switch:1|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: 2024-08 | , festgestellt im {{#invoke:DateTime|format|2024-08|F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: RucolaSpacecat | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: 1 |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://informatik.unibas.ch/lehre/hs10/cs101/folien/17_GenericProg_oldStyle.pdf | {{#if:{{#invoke:URLutil|isWebURL|http://informatik.unibas.ch/lehre/hs10/cs101/folien/17_GenericProg_oldStyle.pdf}} || {{#if: || }} }} }}{{#if: 2024-08 | {{#if:{{#invoke:DateTime|format|2024-08|F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}[http://informatik.unibas.ch/lehre/hs10/cs101/folien/17_GenericProg_oldStyle.pdf }} (PDF; 33 kB) Departement Informatik; Stand: 10. Juli 2011.</ref> oder der Wrapper (v. engl. {{#invoke:Vorlage:lang|flat}} ‚Verpackung‘, ‚Umschlag‘) genannt – ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung, das zur Kategorie der Strukturmuster (engl. {{#invoke:Vorlage:lang|flat}}) gehört. Das Muster dient zur Übersetzung einer Schnittstelle in eine andere. Dadurch wird die Kommunikation von Klassen mit zueinander inkompatiblen Schnittstellen ermöglicht.<ref>{{#invoke:Vorlage:Literatur|f}}</ref> Es ist ein Entwurfsmuster der sogenannten GoF-Muster ({{#invoke:Vorlage:lang|flat}}, siehe Viererbande).
Verwendung
Der Adapter findet Anwendung, wenn eine existierende Klasse verwendet werden soll, deren Schnittstelle nicht der benötigten Schnittstelle entspricht. Dies tritt insbesondere dann auf, wenn Klassen, die zur Wiederverwendung konzipiert wurden – wie Werkzeugsammlungen oder Klassenbibliotheken – verwendet werden sollen. Diese stellen ihre Dienste durch klar definierte Schnittstellen zur Verfügung, die in der Regel nicht geändert werden sollen und häufig auch nicht geändert werden können, da sie von Dritten stammen. Des Weiteren wird der Adapter bei der Erstellung wiederverwendbarer Klassen benutzt, wenn diese mit unabhängigen oder nichtvorhersehbaren Klassen zusammenarbeiten sollen.
UML-Diagramm
Die sogenannte „{{#invoke:Vorlage:lang|flat}}“ (Viererbande) beschreibt zwei Realisierungsalternativen. Die erste ist der Adapter mit Delegation (der sogenannte Objektadapter), die zweite der Adapter mit Vererbung (Klassenadapter).
Adapter mit Delegation (Objektadapter)
Hierbei hat der Adapter eine Assoziation zu der zu adaptierenden Klasse und leitet die Anfragen per Delegation weiter.
Der Vorteil ist, dass der Adapter und der dahinterliegende Dienst ausgetauscht werden können; dafür muss die gesamte genutzte Schnittstelle implementiert werden, auch wenn nur ein Teil der Implementierung angepasst werden soll.
Objektadapter sind auch als Hüllenklasse oder Wrapper-Klasse bekannt. Dabei können nicht nur andere Klassen gekapselt werden, sondern auch primitive Datentypen oder prozedurale Programmierbibliotheken.
Hüllenklassen für primitive Datentypen
Eine Anwendung für Hüllenklassen in objektorientierten Programmiersprachen ist, Klassen für Grunddatentypen zur Verfügung zu stellen, um die Handhabung zu vereinfachen und zusätzliche Funktionen zur Verfügung zu stellen. So gibt es z. B. in der Programmiersprache Java für den Typ int die Klasse Integer, für char die Klasse Character oder für float die Klasse Float (entsprechend auch Byte, Short, Long, Boolean und Double). Diese Hüllenklassen ermöglichen den objektorientierten Umgang mit primitiven Datentypen, zum Beispiel, um sie in ein Reflexionskonzept einzubinden.
Um die Verwendung von Hüllenklassen zu vereinfachen, wurde in Java 5 das so genannte Autoboxing oder Boxing eingeführt. Diese Technik ermöglicht die Verwendung von Hüllenklassen in der von primitiven Datentypen gewohnten Form. Statt der Objekterzeugung mittels Integer i = new Integer(100) kann einfach die Schreibweise Integer i = 100 genutzt werden. Ebenfalls kann die Referenzvariable i genutzt werden, als wäre sie eine gewöhnliche int-Variable.<ref name="java_autoboxing">{{#switch:
|0|=Vorlage:Toter Link/Core{{#if: http://www.oracle.com/technetwork/articles/javase/j2se15-141062.html | {{#if: Java 5 neue Fähigkeiten, insbesondere Autoboxing | Java 5 neue Fähigkeiten, insbesondere Autoboxing }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: 2024-08 | , festgestellt im {{#invoke:DateTime|format|2024-08|F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: 2024-08 | , festgestellt im {{#invoke:DateTime|format|2024-08|F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://www.oracle.com/technetwork/articles/javase/j2se15-141062.html | {{#if:{{#invoke:URLutil|isWebURL|http://www.oracle.com/technetwork/articles/javase/j2se15-141062.html}} || {{#if: || }} }} | {{#if: Java 5 neue Fähigkeiten, insbesondere Autoboxing | {{#if: || }} | {{#if: || }} }} }}{{#if: 2024-08 | {{#if:{{#invoke:DateTime|format|2024-08|F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://www.oracle.com/technetwork/articles/javase/j2se15-141062.html Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: 2024-08 | , festgestellt im {{#invoke:DateTime|format|2024-08|F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://www.oracle.com/technetwork/articles/javase/j2se15-141062.html | {{#if:{{#invoke:URLutil|isWebURL|http://www.oracle.com/technetwork/articles/javase/j2se15-141062.html}} || {{#if: || }} }} }}{{#if: 2024-08 | {{#if:{{#invoke:DateTime|format|2024-08|F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}[http://www.oracle.com/technetwork/articles/javase/j2se15-141062.html }}; Oracle</ref>
Die einfache Schreibweise und bessere Lesbarkeit gehen auf Kosten einer erheblich schlechteren Ausführungsgeschwindigkeit.
Hüllenklassen für prozedurale Bibliotheken
Eine weitere wichtige Anwendung ist die Anpassung einer prozeduralen Bibliothek an ein objektorientiertes Softwaresystem. Hierbei werden die funktionsorientierten Dienste der Bibliothek in ein oder mehrere Objekte gekapselt. Diese Anwendungsform ist häufig als Entwurfsmuster Fassade zu finden.
Adapter mit Vererbung (Klassenadapter)
Ein Klassenadapter wird mit Hilfe von Mehrfachvererbung realisiert. Zum einen erbt er die Implementierung der zu adaptierenden Klasse. Zum anderen die zu implementierende Schnittstelle. Der Aufruf erfolgt dann durch Selbstdelegation.
Ein Klassenadapter kann dann sinnvoll eingesetzt werden, wenn die Programmiersprache (wie beispielsweise C++) die erforderlichen Eigenschaften (Mehrfachvererbung, private Vererbung<ref> {{#if:|{{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}| |}}}}{{#if:|{{{autor}}}: }}{{#if:|{{#if:private inheritance|[{{#invoke:Vorlage:Internetquelle|archivURL|1={{#invoke:URLutil|getNormalized|1={{{archiv-url}}}}}}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=private inheritance}}]{{#if:| ({{{format}}})}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}|{{#if:http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html%7C{{#if:{{#invoke:TemplUtl%7Cfaculty%7C}}%7C{{#invoke:Vorlage:Internetquelle%7CTitelFormat%7Ctitel={{#invoke:WLink%7CgetEscapedTitle%7C1=private inheritance}}}}|[{{#invoke:URLutil|getNormalized|1=http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1=private inheritance}}}}]}}{{#if:| ({{{format}}}{{#if:dietmar-kuehl.de{{#if: 2019-06-23 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| )
| {{#if:{{#ifeq:de|de||{{#if:|1}}}}| ;
| )}}}}}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}}}{{#if:http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html}}%7C%7C}}}}{{#if:private inheritance|{{#if:{{#invoke:WLink|isValidLinktext|1=private inheritance|lines=0}}||}}}}{{#if: dietmar-kuehl.de| In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=dietmar-kuehl.de}}}}{{#if: | {{{hrsg}}}{{#if: |,|{{#if: 2019-06-23 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: | {{#if:{{#invoke:DateTime|format|{{{datum}}}|noerror=1}}
|{{#invoke:DateTime|format|{{{datum}}}|T._Monat JJJJ}}
|{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum={{{datum}}}|class=Zitationswartung}} }}{{#if: |,|{{#if: 2019-06-23 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: | S. {{{seiten}}}{{#if: |,|{{#if: 2019-06-23 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: {{#invoke:TemplUtl|faculty|}}| {{#if:|{{#if:|archiviert|ehemals}}|{{#if:|Archiviert|Ehemals}}}} {{#if:|vom|im}} Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|}}| (nicht mehr online verfügbar)}}{{#if: | am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|{{{archiv-datum}}}{{#if:66813||(?)}}}}}}{{#if: 2019-06-23|;}}}}{{#if: 2019-06-23| {{#if:{{#invoke:TemplUtl|faculty|}}|abgerufen|Abgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| 2019-06-23 |ISO|noerror=1}} }}
|4=im Jahr
|7=im
|10=am
|#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf=2019-06-23|class=Zitationswartung}} }} {{#invoke:DateTime|format|2019-06-23|T._Monat JJJJ}}
| {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:de|de||{{#if:|1}}}}|{{#if:dietmar-kuehl.de{{#if: 2019-06-23 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| (
| {{#if: | | (}}
}}{{#ifeq:{{#if:de|de|de}}|de||
{{#invoke:Multilingual|format|{{{sprache}}}|slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: |{{#ifeq:{{#if:de|de|de}}|de||, }}{{{kommentar}}}}})}}{{#if: {{#if: 2019-06-23 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}} }}|{{#if: |: {{
#if:
| „{{
#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| Vorlage:Str trim
| {{#invoke:Vorlage:lang|flat}}
}}“
| {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| „Vorlage:Str trim“
| {{#invoke:Text|quote
|1={{#if:
| {{#invoke:Vorlage:lang|flat}}
| {{#invoke:Vorlage:lang|flat}} }}
|2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
|3=1}} }}
}}{{#if:
| (<templatestyles src="Person/styles.css" />{{#if: | : }}{{#if: | , deutsch: „“ }})
| {{#if:
| ({{#if: | , deutsch: „“ }})
| {{#if: | (deutsch: „“) }}
}}
}}{{#if: {{{zitat}}}
| {{#if:
| {{#if: {{{zitat}}}
| Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
| Vorlage:": Text= fehlt }}{{#if: | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
| Vorlage:": Ungültiger Wert: ref=
| {{{ref}}} }}
}}|.{{#if:{{#invoke:TemplUtl|faculty|}}|{{#if:||{{#ifeq: | JaKeinHinweis |{{#switch:
|0|=Vorlage:Toter Link/Core{{#if: http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html | {{#if: | [1] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html | {{#if:{{#invoke:URLutil|isWebURL|http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html | {{#if:{{#invoke:URLutil|isWebURL|http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}[http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html }}|{{#switch: |0|=Vorlage:Toter Link/Core{{#if: http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html | {{#if: | [2] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html | {{#if:{{#invoke:URLutil|isWebURL|http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html | {{#if:{{#invoke:URLutil|isWebURL|http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}[http://www.dietmar-kuehl.de/mirror/c++-faq/private-inheritance.html }} }}}}}}}}}}{{#if:| {{#invoke:Vorlage:Internetquelle|archivBot|stamp={{{archiv-bot}}}|text={{#if:|Vorlage:Webarchiv/archiv-bot}}
}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}</ref>) aufweist. Programmiersprachen ohne private und Mehrfachvererbung sind für diese Art von Adapter eher ungeeignet. Der Versuch, diese Beschränkung über die Kombination von Klassenvererbung und Interface-Implementierung zu umgehen, führt dazu, dass die Adapterklasse ihren Klienten alle Methoden zur Verfügung stellt. Das Konstrukt kann zwar als Adapter verwendet werden, ist aber kein Adapter im Sinne des GoF-Buchs, der eine Schnittstelle in eine andere überführt.
Vor- und Nachteile
Die Vorteile eines Klassenadapters bestehen darin, dass er sich genau einer Zielklasse anpasst und dadurch nur das Verhalten der Zielklasse überschreiben kann. Der Objektadapter kann auch Unterklassen mit anpassen.
Nachteilig wirkt sich aus, dass ein Klassenadapter nicht zur automatischen Anpassung von Unterklassen verwendet werden kann.
Akteure
Der Dienst bietet wiederzuverwendende Dienstleistungen mit fest definierter Schnittstelle an. Der Klient nutzt Dienste über inkompatible Schnittstellen und greift dabei auf adaptierte Schnittstellen zurück. Das Ziel definiert die Schnittstelle, die der Klient nutzen kann. Der Adapter adaptiert die Schnittstelle des Dienstes auf die Schnittstelle zum Klienten.
Beispiele
Allgemein
Der Zugriff der Elemente einer grafischen Benutzeroberfläche auf das dahinterliegende Modell kann über Adapter mit Delegation gesteuert werden. So kann beispielsweise eine Checkbox sowohl einen gepufferten Boolean-Wert als auch das unmittelbare Ergebnis einer Bedingung anzeigen. Dieses Muster wird unter anderem von Visualworks Smalltalk intensiv genutzt.
Klassenadapter
<syntaxhighlight lang="cpp"> // C++ Code Beispiel
/* Die Schnittstelle, welche der Adapter implementieren soll */ class UsedInterface { public:
UsedInterface(); virtual void operation() const;
};
/* Die Implementierung, welche der Adapter verwenden soll */ class Adaptee { public:
Adaptee(); static void adaptedOperation() const;
};
/* Die eigentliche Adapterklasse */ class Adapter : public UsedInterface, private Adaptee { public:
Adapter(); void operation() const;
};
/* Implementierung des Adapters */ void Adapter::operation() const {
Adaptee::adaptedOperation();
} </syntaxhighlight>
Konkretes Beispiel in C++
Es wurden zwei Bibliotheken gekauft, deren Implementierung nicht einsehbar ist und nicht geändert werden kann. Die erste ist eine Bibliothek für algorithmische Geometrie. Sie enthält Algorithmen, die auf geometrischen Objekte wie Kreisen, Geraden und Ebenen arbeiten, z. B. einen Algorithmus, der testet, ob sich zwei Kreise schneiden. Die zweite ist eine GUI-Bibliothek, die ebenfalls Objekte wie Kreise und Geraden kennt und diese auf den Bildschirm zeichnen kann.
Nun soll mit Hilfe der Geometrie-Bibliothek festgestellt werden, ob sich zwei Kreise schneiden, die als Objekte der GUI-Bibliothek vorliegen (bevor sie auf den Bildschirm gemalt werden).
Leider sind die Schnittstellen der beiden Bibliotheken inkompatibel. Sie unterscheiden sich nicht nur in der Bezeichnung der Klassen (Kreis vs. Circle), sondern auch in der Bezeichnung und Semantik der Methoden (getMittelpunkt() vs. getX() und getY()).
Die Algorithmen der Geometrie-Bibliothek arbeiten nur mit der öffentlichen Schnittstelle (dem Interface) der geometrischen Objekte. Ein Kreis beispielsweise muss nur Auskunft über seinen Radius und seinen Mittelpunkt geben können. Er wird durch eine abstrakte Klasse mit den entsprechenden Methoden getRadius() und getMittelpunkt() repräsentiert. Er hat keine Datenelemente für Radius und Mittelpunkt, denn er könnte auch anders festgelegt sein: Durch zwei Punkte auf dem Rand, die sich diametral gegenüberliegen, durch drei Punkte auf dem Rand oder implizit als die Lösungsmenge der Gleichung <math>(y-a)^2+(x-b)^2=r^2</math>. Dadurch werden die Algorithmen unabhängig von der konkreten Darstellung der geometrischen Objekte. Punkte dagegen sind in der Bibliothek (konkret) als Struktur implementiert.
<syntaxhighlight lang="Cpp"> // Bibliothek für algorithmische Geometrie
struct Punkt {
double _x, _y; // der Einfachheit halber public
Punkt(double x, double y) : _x(x), _y(y) {}
};
class Kreis { // abstrakte Klasse, nur Interface public:
virtual double getRadius() const = 0; virtual Punkt getMittelpunkt() const = 0;
};
// Die Implementierung dieser Funktion stützt sich rein auf die // Schnittstelle, also nicht auf konkrete Realisierungen: bool schneidetKreisKreis(const Kreis& k1, const Kreis& k2) {
double abstandDerKreise = abstand(k1.getMittelpunkt(), k2.getMittelpunkt()); return abstandDerKreise <= (k1.getRadius() + k2.getRadius());
} </syntaxhighlight>
Die in der GUI-Bibliothek enthaltenen grafischen Objekte können sich auf den Bildschirm zeichnen. Ein Circle ist intern dargestellt durch drei Gleitkommazahlen, zwei für die Mittelpunkts-Koordinaten und eine für den Radius. Er kann Auskunft über seine Geometrie geben (getX() usw.):
<syntaxhighlight lang="Cpp"> // GUI-Bibliothek
class GraphicalObject {
virtual void draw() = 0; // zeichne dich selbst auf den Bildschirm
};
class Circle : public GraphicalObject { private:
double _mx, _my; // Mittelpunkt x und y double _r; // Radius
public:
Circle(double x, double y, double r) : _mx(x), _my(y), _r(r) {}
double getX() const { return _mx; }
double getY() const { return _my; }
double getR() const { return _r; }
void draw() { /* zeichne dich mit Bresenham-Algorithmus */}
}; </syntaxhighlight>
Die Schnittstellen der beiden Bibliotheken sind offensichtlich unterschiedlich. Um nun doch einen Circle in einem der Algorithmen für Kreis benutzen zu können, wird ein Adapter für Circle-Objekte geschrieben. Jedes Adapter-Objekt enthält einen zu adaptierenden Circle und implementiert die Schnittstelle von Kreis:
<syntaxhighlight lang="Cpp"> // Circle-Adapter zur Benutzung eines Circle als Kreis in der // Geometrie-Bibliothek
class CircleAdapter : public Kreis, private Circle { public:
CircleAdapter(const Circle& c) : Circle(c.getX(), c.getY(), c.getR()) {}
// Hier wird Circle so adaptiert, dass es auf Kreis passt
double getRadius() const { return getR(); }
Punkt getMittelpunkt() const { return Punkt(getX(), getY()); }
}; </syntaxhighlight>
Nun können zwei Circle aus der GUI-Bibliothek als Kreis gesehen mit dem Algorithmus aus der Geometrie-Bibliothek auf Schnitt getestet werden:
<syntaxhighlight lang="Cpp"> int main() {
// Mit Hilfe der GUI-Bibliothek werden zwei Circles erzeugt Circle c1 = Circle(1.0, 0.0, 2.0); Circle c2 = Circle(3.0, 0.0, 2.0);
// dann werden sie in einen Circle-Adapter gesteckt CircleAdapter c1Adapter(c1); CircleAdapter c2Adapter(c2);
// anschließend wird die Geometrie-Bibliothek zum Test auf Schnitt benutzt
if (schneidetKreisKreis(c1Adapter, c2Adapter)) {
...
} else {
...
}
} </syntaxhighlight>
Verwandte Entwurfsmuster
Brücke und Adapter sind sich ähnlich. Die Brücke ist jedoch eine gezielte Designentscheidung zur Trennung einer Schnittstelle von ihrer Implementierung, während der Adapter einer nachträglichen Anpassung einer Schnittstelle an eine andere dient.
Fassade und Adapter sind eine Form der Hüllenklasse. Die Fassade verbirgt allerdings den Funktionsumfang einer Bibliothek ganz oder teilweise, während der Adapter nur die Schnittstelle verändert.
Weblinks
|X|x= |0|-= |S|s= – Sammlung von Bildern |1|= – Sammlung von Bildern{{#if:
| {{#switch: {{#invoke:TemplUtl|faculty|1}}/{{#invoke:TemplUtl|faculty|1}}
|1/= und Videos
|1/1=, Videos und Audiodateien
|/1= und Audiodateien}}
| , Videos und Audiodateien
}}
|#default= – }}{{#if: Adapter pattern
| {{#ifeq: {{#invoke:Str|left|adapter pattern|9}}
| category:
| FEHLER: Ohne Category: angeben!}}}}Vorlage:Wikidata-Registrierung
|1|= – Lern- und Lehrmaterialien |0|-= |X|x={{#switch: 0
|0|4|10|12|14|100=}}
|#default= – {{{suffix}}}
}}{{#if: | ({{#invoke:Multilingual|format|{{{lang}}}|slang=!|shift=m}}) }}{{#invoke:TemplatePar|check
|opt= 1= 2= lang= suffix= |template=Vorlage:Wikibooks |cat=Wikipedia:Vorlagenfehler/Schwesterprojekt }}
Einzelnachweise
<references />
{{#if:||{{#ifeq:0|10|{{#ifeq:Adapter (Entwurfsmuster)|Vorlage:Erweiterte Navigationsleiste||Vorlage:Templatetransclusioncheck Vorlage:Dokumentation/ruler}}}}}}<templatestyles src="Erweiterte Navigationsleiste/styles legacy.css" />Vorlage:Klappleiste/Anfang{{#if: |
}}{{#if: |
}}
{{#if: | {{#if: Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter | {{#if:Strukturmuster||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 2|1|2}}px solid #FFF;border-bottom: {{#if: Verhaltensmuster|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|Strukturmuster }} {{#if: Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel | {{#if:Verhaltensmuster||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 3|1|2}}px solid #FFF;border-bottom: {{#if: Muster für objekt-relationale Abbildung|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|Verhaltensmuster }} {{#if: Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation | {{#if:Muster für objekt-
relationale Abbildung||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 4|1|2}}px solid #FFF;border-bottom: {{#if: Nachrichten-
übermittlungsmuster|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|Muster für objekt-
relationale Abbildung }} {{#if: {{#if: File Transfer | Shared Database | Remote Procedure Invocation | Messaging|
| class="erw-nav-bild" style="width:0; padding:0 2px 0 0; border:1px solid transparent; " rowspan="{{#expr: 0{{#if:Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool|+1}}{{#if:Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter|+1}}{{#if:Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel|+1}}{{#if:Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation|+1}}{{#if:{{#if: File Transfer | Shared Database | Remote Procedure Invocation | Messaging| }}{{#if:| }}|+1}}{{#if:Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}}}" |
{{{Untergruppe-Inhalt}}} }}
{{#if: File Transfer | Shared Database | Remote Procedure Invocation | Messaging |
{{#if:Integrationsarten||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 1|1|2}}px solid #FFF;border-bottom: {{#if: Nachrichtenaufbau|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Integrationsarten
}}
{{#if: Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator |
{{#if:Nachrichtenaufbau||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 2|1|2}}px solid #FFF;border-bottom: {{#if: Endpunkte|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Nachrichtenaufbau
}}
{{#if: Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator |
{{#if:Endpunkte||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 3|1|2}}px solid #FFF;border-bottom: {{#if: Kanäle|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Endpunkte
}}
{{#if: Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus |
{{#if:Kanäle||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 4|1|2}}px solid #FFF;border-bottom: {{#if: Nachrichtenvermittlung|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Kanäle
}}
{{#if: Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker |
{{#if:Nachrichtenvermittlung||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 5|1|2}}px solid #FFF;border-bottom: {{#if: Nachrichtenumwandlung|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Nachrichtenvermittlung
}}
{{#if: Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model |
{{#if:Nachrichtenumwandlung||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 6|1|2}}px solid #FFF;border-bottom: {{#if: Systemmanagement|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Nachrichtenumwandlung
}}
{{#if: Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger |
{{#if:Systemmanagement||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 7|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Systemmanagement
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 8|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 9|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 10|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 11|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 12|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: |1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:13|width:13;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 14|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: |1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:15|width:15;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 16|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: |1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:17|width:17;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: |1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:18|width:18;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 19|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 20|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
}} {{#if: Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool | {{#if:Erzeugungsmuster||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 1|1|2}}px solid #FFF;border-bottom: {{#if: Strukturmuster|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|Erzeugungsmuster }} |
{{#if:Erzeugungsmuster | colspan="2"}} class="hlist" style="text-align: {{#if:Erzeugungsmuster|left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool }} {{#if: | |
class="erw-nav-bild" style="width:0; padding:0 2px 0 0; border:1px solid transparent; " rowspan="{{#expr: 0{{#if:Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool|+1}}{{#if:Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter|+1}}{{#if:Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel|+1}}{{#if:Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation|+1}}{{#if:{{#if: File Transfer | Shared Database | Remote Procedure Invocation | Messaging| }}{{#if:| }}|+1}}{{#if:Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}}}" | {{{Untergruppe-Inhalt}}} }}
{{#if: File Transfer | Shared Database | Remote Procedure Invocation | Messaging |
{{#if:Integrationsarten||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 1|1|2}}px solid #FFF;border-bottom: {{#if: Nachrichtenaufbau|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Integrationsarten
}}
{{#if: Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator |
{{#if:Nachrichtenaufbau||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 2|1|2}}px solid #FFF;border-bottom: {{#if: Endpunkte|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Nachrichtenaufbau
}}
{{#if: Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator |
{{#if:Endpunkte||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 3|1|2}}px solid #FFF;border-bottom: {{#if: Kanäle|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Endpunkte
}}
{{#if: Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus |
{{#if:Kanäle||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 4|1|2}}px solid #FFF;border-bottom: {{#if: Nachrichtenvermittlung|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Kanäle
}}
{{#if: Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker |
{{#if:Nachrichtenvermittlung||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 5|1|2}}px solid #FFF;border-bottom: {{#if: Nachrichtenumwandlung|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Nachrichtenvermittlung
}}
{{#if: Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model |
{{#if:Nachrichtenumwandlung||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 6|1|2}}px solid #FFF;border-bottom: {{#if: Systemmanagement|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Nachrichtenumwandlung
}}
{{#if: Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger |
{{#if:Systemmanagement||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 7|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Systemmanagement
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 8|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 9|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 10|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 11|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 12|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: |1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:13|width:13;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 14|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: |1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:15|width:15;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 16|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: |1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:17|width:17;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: |1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:18|width:18;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 19|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 20|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{{BILD}}}
}}{{#if: | |
class="erw-nav-bild" style="width:0; padding:0 2px 0 0; border:1px solid transparent; " rowspan="{{#expr: 0{{#if:Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool|+1}}{{#if:Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter|+1}}{{#if:Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel|+1}}{{#if:Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation|+1}}{{#if:{{#if: File Transfer | Shared Database | Remote Procedure Invocation | Messaging| }}{{#if:| }}|+1}}{{#if:Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}}}" |
{{{Untergruppe-Inhalt}}} }}
{{#if: File Transfer | Shared Database | Remote Procedure Invocation | Messaging |
{{#if:Integrationsarten||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 1|1|2}}px solid #FFF;border-bottom: {{#if: Nachrichtenaufbau|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Integrationsarten
}}
{{#if: Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator |
{{#if:Nachrichtenaufbau||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 2|1|2}}px solid #FFF;border-bottom: {{#if: Endpunkte|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Nachrichtenaufbau
}}
{{#if: Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator |
{{#if:Endpunkte||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 3|1|2}}px solid #FFF;border-bottom: {{#if: Kanäle|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Endpunkte
}}
{{#if: Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus |
{{#if:Kanäle||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 4|1|2}}px solid #FFF;border-bottom: {{#if: Nachrichtenvermittlung|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Kanäle
}}
{{#if: Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker |
{{#if:Nachrichtenvermittlung||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 5|1|2}}px solid #FFF;border-bottom: {{#if: Nachrichtenumwandlung|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Nachrichtenvermittlung
}}
{{#if: Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model |
{{#if:Nachrichtenumwandlung||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 6|1|2}}px solid #FFF;border-bottom: {{#if: Systemmanagement|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Nachrichtenumwandlung
}}
{{#if: Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger |
{{#if:Systemmanagement||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 7|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|Systemmanagement
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 8|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 9|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 10|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 11|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 12|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: |1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:13|width:13;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 14|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: |1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:15|width:15;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 16|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: |1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:17|width:17;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: |1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:18|width:18;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 19|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
{{#if: |
{{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 20|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:;|}}"|'
}}
}} | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| {{#if:Strukturmuster | colspan="2"}} class="hlist" style="text-align: {{#if:Strukturmuster|left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| {{#if:Verhaltensmuster | colspan="2"}} class="hlist" style="text-align: {{#if:Verhaltensmuster|left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| {{#if:Muster für objekt- relationale Abbildung |
colspan="2"}} class="hlist" style="text-align: {{#if:Muster für objekt- relationale Abbildung|left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"| Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| {{#if:Integrationsarten | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
File Transfer | Shared Database | Remote Procedure Invocation | Messaging }} {{#if: | |
style="width:0%; padding:0 2px 0 0; " rowspan="{{#expr: 0{{#if:File Transfer | Shared Database | Remote Procedure Invocation | Messaging|+2}}{{#if:Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator|+2}}{{#if:Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator|+2}}{{#if:Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus|+2}}{{#if:Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker|+2}}{{#if:Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model|+2}}{{#if:Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}}}" | {{{BILD}}}
}}{{#if: | |
style="width:0%; padding:0 2px 0 0; " rowspan="{{#expr: 0{{#if:File Transfer | Shared Database | Remote Procedure Invocation | Messaging|+2}}{{#if:Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator|+2}}{{#if:Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator|+2}}{{#if:Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus|+2}}{{#if:Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker|+2}}{{#if:Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model|+2}}{{#if:Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}}}" | [[Datei:{{{Bild}}}|{{#if: | {{{Bild-px}}} | x{{#expr: 0{{#if:File Transfer | Shared Database | Remote Procedure Invocation | Messaging|+11}}{{#if:Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator|+11}}{{#if:Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator|+11}}{{#if:Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus|+16}}{{#if:Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker|+11}}{{#if:Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model|+11}}{{#if:Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger|+11}}{{#if:|+16}}{{#if:|+11}}{{#if:|+11}}{{#if:|+11}}{{#if:{{{Untergruppe-Inhalt12}}}|+16}}{{#if:|+11}}{{#if:|+11}}{{#if:|+11}}{{#if:|+16}}{{#if:|+11}}{{#if:|+11}}{{#if:|+11}}{{#if:|+16}}}}px}}{{#if: {{{Bild-Beschreibung}}} | | {{{Bild-Beschreibung}}} }}]]
}} | |
| {{#if:Nachrichtenaufbau | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator }} | |||
| {{#if:Endpunkte | colspan="2"}} class="hlist" style="text-align: {{#if:Endpunkte|left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator }} | |||
| {{#if:Kanäle | colspan="2"}} class="hlist" style="text-align: {{#if:Kanäle|left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus }} | |||
| {{#if:Nachrichtenvermittlung | colspan="2"}} class="hlist" style="text-align: {{#if:Nachrichtenvermittlung|left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker }} | |||
| {{#if:Nachrichtenumwandlung | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model }} | |||
| {{#if:Systemmanagement | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger }} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
{{#if: File Transfer | Shared Database | Remote Procedure Invocation | Messaging|}} |
{{#if:Nachrichten-
übermittlungsmuster||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 5|1|2}}px solid #FFF;border-bottom: {{#if: andere|2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|Nachrichten-
übermittlungsmuster
}}
{{#if:Nachrichten-
übermittlungsmuster
colspan="2"}} class="hlist" style="text-align: {{#if:Nachrichten-
übermittlungsmuster|left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:ja|0|0 .25em}};"|
{{#if: File Transfer | Shared Database | Remote Procedure Invocation | Messaging|
| {{#if:Integrationsarten | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
File Transfer | Shared Database | Remote Procedure Invocation | Messaging }} {{#if: | |
style="width:0%; padding:0 2px 0 0; " rowspan="{{#expr: 0{{#if:File Transfer | Shared Database | Remote Procedure Invocation | Messaging|+2}}{{#if:Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator|+2}}{{#if:Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator|+2}}{{#if:Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus|+2}}{{#if:Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker|+2}}{{#if:Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model|+2}}{{#if:Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}}}" | {{{BILD}}}
}}{{#if: | |
style="width:0%; padding:0 2px 0 0; " rowspan="{{#expr: 0{{#if:File Transfer | Shared Database | Remote Procedure Invocation | Messaging|+2}}{{#if:Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator|+2}}{{#if:Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator|+2}}{{#if:Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus|+2}}{{#if:Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker|+2}}{{#if:Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model|+2}}{{#if:Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}{{#if:|+2}}}}" | [[Datei:{{{Bild}}}|{{#if: | {{{Bild-px}}} | x{{#expr: 0{{#if:File Transfer | Shared Database | Remote Procedure Invocation | Messaging|+11}}{{#if:Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator|+11}}{{#if:Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator|+11}}{{#if:Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus|+16}}{{#if:Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker|+11}}{{#if:Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model|+11}}{{#if:Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger|+11}}{{#if:|+16}}{{#if:|+11}}{{#if:|+11}}{{#if:|+11}}{{#if:{{{Untergruppe-Inhalt12}}}|+16}}{{#if:|+11}}{{#if:|+11}}{{#if:|+11}}{{#if:|+16}}{{#if:|+11}}{{#if:|+11}}{{#if:|+11}}{{#if:|+16}}}}px}}{{#if: {{{Bild-Beschreibung}}} | | {{{Bild-Beschreibung}}} }}]]
}} | |
| {{#if:Nachrichtenaufbau | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator }} | |||
| {{#if:Endpunkte | colspan="2"}} class="hlist" style="text-align: {{#if:Endpunkte|left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator }} | |||
| {{#if:Kanäle | colspan="2"}} class="hlist" style="text-align: {{#if:Kanäle|left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus }} | |||
| {{#if:Nachrichtenvermittlung | colspan="2"}} class="hlist" style="text-align: {{#if:Nachrichtenvermittlung|left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker }} | |||
| {{#if:Nachrichtenumwandlung | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model }} | |||
| {{#if:Systemmanagement | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger }} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
| {{#if: | left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}} | |||
}}
}}
{{#if: Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object | {{#if:andere||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 6|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|andere }} {{#if:andere left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object }}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 7|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 8|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 9|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 10|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 11|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 12|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 13|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 14|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 15|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 16|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 17|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 18|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 19|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 20|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 21|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 22|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 23|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 24|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 25|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 26|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 27|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 28|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 29|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 30|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 31|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: | {{#if:||class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;{{#if:|background:#;|{{#switch:|eigen=background:#{{#if:||E6E6FF}};|einheitlich=background:;}}}}border: 1px solid transparent;border-top: {{#if: 32|1|2}}px solid #FFF;border-bottom: {{#if: |2|1}}px solid #FFF;padding: 0 1em;{{#if:|width:{{{Kopfbreite}}};|}}"|' }} {{#if: left|center}};border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: {{#if:|0|0 .25em}};"|
}}
{{#if: |
}}{{#if: |
}}{{#if: Siehe auch: Analysemuster | Architekturmuster | Integrationsmuster | SOA-Muster |
- Wikipedia:Weblink offline fix-attempted
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link
- Wikipedia:Vorlagenfehler/Parameter:URL
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link/URL fehlt
- Wikipedia:Vorlagenfehler/Parameter:Datum
- Wikipedia:Vorlagenfehler/Parameter:Linktext
- Wikipedia:Vorlagenfehler/Vorlage:"
- Wikipedia:Vorlagenfehler/Schwesterprojekt
- Strukturmuster
- Viererbande-Entwurfsmuster