{"id":2415,"date":"2013-09-29T14:39:29","date_gmt":"2013-09-29T12:39:29","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=2415"},"modified":"2013-09-29T14:40:03","modified_gmt":"2013-09-29T12:40:03","slug":"design-pattern-kompakt","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2013\/09\/design-pattern-kompakt\/","title":{"rendered":"DESIGN PATTERN kompakt"},"content":{"rendered":"<h3>Grundlegende Pattern<\/h3>\n<p><b>Schnittstellen<\/b><b>      <br \/><i>Interfaces<\/i><\/b>     <br \/>Schnittstellen definieren die Operationen einer Klasse, und schreibt Verhalten vor, welches die Objekt dann zeigen.<\/p>\n<p><strong>Delegate      <br \/><em>Delegate<\/em><\/strong>     <br \/>Delegiere die Arbeit an ein anderes Objekt. Erweitere die Funktionalit\u00e4t einer Klasse nicht durch Vererbung, sondern durch Assoziation.<\/p>\n<p><b>Markierungsschnittstelle<\/b><b>      <br \/><i>Marker-Interface<\/i><\/b>     <br \/>Durch die Implementierung einer Schnittstellen, die keine Operationen vorschreibt, wird das Objekt markiert und bekommt somit einen Typ.<\/p>\n<p><b>Immutable      <br \/><i>Abstract Factory<\/i><\/b>     <br \/>Die Zust\u00e4nde eines Objekts lassen sich nicht mehr ver\u00e4ndern. Unver\u00e4nderbare Objekte.<\/p>\n<p><b>Typsicherer Aufz\u00e4hlungen<\/b>     <br \/>Lasse Konstanten typsicher sein, dass keine Verwechselungen der Reihenfolge, und der Inhalte auftreten.<\/p>\n<p><b>Null-<\/b><b>Objekt      <br \/><i>Null object<\/i><\/b>     <br \/>Implementiere die Schnittstelle ohne Funktionalit\u00e4t.<\/p>\n<p><b>Objekt-Pool<\/b><b>      <br \/><i>Object Pool<\/i><\/b>     <br \/>Halte teuer zu erzeugende Objekte in einem Objekt-Pool.<\/p>\n<h3>Erzeuger-Pattern (Creational Pattern)<\/h3>\n<p><b>Abstrakte Fabrik      <br \/><i>Abstract Factory<\/i><\/b>     <br \/>Stelle eine Schnittstelle bereit, um eine Familie von verwandten Objekten zu erzeugen, ohne die konkreten Klassen zu offenbaren.<\/p>\n<p><b>Erbauer      <br \/><i>Builder<\/i><\/b>     <br \/>Trenne die Erzeugung und die Repr\u00e4sentation eines komplexeren Objektes, so dass sich die Konstruktion auch mit anderen Repr\u00e4sentationen durchf\u00fchren lasst.<\/p>\n<p><b>Fabrikmethode      <br \/><i>Factory Method<\/i><\/b>     <br \/>Stelle f\u00fcr die Erzeugung von Objekten eine Schnittstelle bereit, lass aber eine Fabrik entscheiden, welche Unterklassen erzeugt wird.<\/p>\n<p><b>Prototyp      <br \/><i>Prototype<\/i><\/b>     <br \/>Lege durch eine Prototyp fest, welche Objekten zu erzeugen sind und erzeuge neue Objekte als Kopie dieses Prototyps.<\/p>\n<p><b>Singleton<\/b>     <br \/>Stelle sicher, dass es nur ein Exemplar eine Klasse gibt. Dieses l\u00e4sst sich durch eine statische Funktion erfragen.<\/p>\n<h3>Struktur-Muster (Structural Pattern)<\/h3>\n<p><b>Adapter<\/b>     <br \/>Passe die Schnittstelle eine Klasse auf die Schnittstelle einer anderen Klasse an. So k\u00f6nnen Klassen zusammenarbeiten, die sonst wegen inkompatibler Schnittstellen nicht miteinander zusammenarbeiten k\u00f6nnten.<\/p>\n<p><b>Br\u00fccke      <br \/><i>Bridge<\/i><\/b>     <br \/>L\u00f6se die Abstraktion von der Implementierung, so dass beide unabh\u00e4ngig ver\u00e4ndert werden k\u00f6nnen.<\/p>\n<p><b>Kompositum<\/b><b>      <br \/><i>Composite<\/i><\/b>     <br \/>Zusammengesetzte Objekte bilden \u00fcber eine Teil\/Ganzes-Beziehung eine Baumstruktur. Die Bl\u00e4tter und Knoten sollen gleich behandelt werden k\u00f6nnen.<\/p>\n<p><b>Dekorator      <br \/><i>Decorator<\/i><\/b>     <br \/>Ein Objekt kann (auch dynamisch) weitere Verantwortlichkeiten enthalten.<\/p>\n<p><b>Fassade      <br \/><i>Facade<\/i><\/b>     <br \/>Stelle eine einfache Schnittstelle f\u00fcr ein komplexes System bereit. Damit wird das tiefer liegende System einfacher zu nutzen.<\/p>\n<p><b>Fliegengewicht      <br \/><i>Flyweight<\/i><\/b>     <br \/>Behandle eine gro\u00dfe Menge kleiner Objekte effizient, in dem unver\u00e4nderliche Objekte gemeinsam genutzt werden.<\/p>\n<p><b>Proxy<\/b>     <br \/>Stelle einen Stellvertreter f\u00fcr ein Objekt bereit.<\/p>\n<h3>Verhaltsmuster&#160; (Behavioral Pattern)<\/h3>\n<p><b>Verantwortungskette<\/b>     <br \/><b><i>Chain Of Responsibility<\/i><\/b>     <br \/>Gehe eine Kette von Objekten durch und frage sie, ob sie eine Anfrage annehmen. Entkopple dadurch Sender und Empf\u00e4nger.<\/p>\n<p><b>Kommando<\/b>     <br \/><b><i>Command<\/i><\/b>     <br \/>Eine Operation wird als Objekt verpackt.<\/p>\n<p><b>Interpreter<\/b>     <br \/>Definiere zu einer Sprache eine Grammatik und baue einen Interpreter, der S\u00e4tze der Sprache erkennt.<\/p>\n<p><b>Iterator<\/b>     <br \/>Erm\u00f6gliche ein sequenzielles Ablaufen einer Datensammlung ohne die interne Repr\u00e4sentation der Daten freizugeben.<\/p>\n<p><b>Vermittler      <br \/><i>Mediator<\/i><\/b>     <br \/>Entkopple Objekte, damit sie sich nicht mehr direkt kommunizieren m\u00fcssen.<\/p>\n<p><b>Memento<\/b>     <br \/>Speichere ohne Freigabe der inneren Struktur den internen Zustand eines Objektes um ihn sp\u00e4ter wieder Herstellen zu k\u00f6nnen.<\/p>\n<p><b>Beobachter<\/b>     <br \/><b><i>Observer<\/i><\/b>     <br \/>Definiere eine 1:n-Beziehung zwischen Objekten, so dass bei einer Zustands\u00e4nderung die Interessenten automatisch informiert werden.<\/p>\n<p><b>Zustand<\/b>     <br \/><b><i>State<\/i><\/b>     <br \/>Erlaube bei einer \u00c4nderung des Zustandes eine \u00c4nderung des Verhaltens.<\/p>\n<p><b>Strategie<\/b>     <br \/><b><i>Strategy<\/i><\/b>     <br \/>Definiere f\u00fcr jeden Algorithmus (Strategie) eine Klasse, die dann sp\u00e4ter vom Klienten genutzt werden kann.<\/p>\n<p><b>Schablonenmethode      <br \/><i>Template Methode<\/i><\/b>     <br \/>Definierte das Skelett einer Anwendung durch eine Reihe von Operationen und verschiebe die Implementierung der Operationen auf die Unterklassen.<\/p>\n<p><b>Besucher<\/b>     <br \/><b><i>Visitor<\/i><\/b>     <br \/>Trenne Algorithmus und Datenstruktur voneinander, sodass sich insbesondere Verhalten anpassen l\u00e4sst, ohne die Klasse f\u00fcr die Datenstruktur anfassen zu m\u00fcssen.<\/p>\n<h3>Links<\/h3>\n<ul>\n<li><a href=\"http:\/\/www.cmcrossroads.com\/bradapp\/javapats.html\">Patterns for Java and Distributed Computing<\/a> <\/li>\n<li><a href=\"http:\/\/home.earthlink.net\/~huston2\/dp\/patterns.html\">Design Patterns<\/a> (Vince Huston) <\/li>\n<li><a href=\"http:\/\/www.cetus-links.org\/oo_patterns.html\">Cetus Links Patterns<\/a> <\/li>\n<li><a href=\"http:\/\/www.alumni.caltech.edu\/~croft\/research\/java\/pattern\/\">Croft&#8217;s Design Patterns In Java<\/a> <\/li>\n<li><a href=\"http:\/\/industriallogic.com\/patterns\/\">Industrial Logic Patterns Page<\/a> <\/li>\n<li><a href=\"http:\/\/www.patterndepot.com\/pages\/\">Pattern Depot<\/a> <\/li>\n<li><a href=\"http:\/\/c2.com\/ppr\/index.html\">Portland Pattern Repository<\/a> <\/li>\n<li><a href=\"http:\/\/c2.com\/cgi-bin\/wiki\">Wiki Wiki Web<\/a> <\/li>\n<li><a href=\"http:\/\/hillside.net\/patterns\/\">Design Patterns Home Page<\/a> <\/li>\n<li><a href=\"http:\/\/www.patterndepot.com\/put\/8\/JavaPatterns.htm\">James Cooper&#8217;s The Design Patterns Java Companion<\/a> <\/li>\n<li><a href=\"http:\/\/www.soberit.hut.fi\/tik-76.278\/group6\/awtpat.html\">Design Patterns in Java AWT<\/a> <\/li>\n<li><a href=\"http:\/\/wwwipd.ira.uka.de\/~tichy\/publications\/Catalogue.doc\">A Catalogue of General-Purpose Design Patterns<\/a> <\/li>\n<\/ul>\n<blockquote>\n<p>Was ist eigentlich kein Pattern?     <br \/>Bjarne Stroustrup, OOPSLA 95<\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Grundlegende Pattern Schnittstellen Interfaces Schnittstellen definieren die Operationen einer Klasse, und schreibt Verhalten vor, welches die Objekt dann zeigen. Delegate Delegate Delegiere die Arbeit an ein anderes Objekt. Erweitere die Funktionalit\u00e4t einer Klasse nicht durch Vererbung, sondern durch Assoziation. Markierungsschnittstelle Marker-Interface Durch die Implementierung einer Schnittstellen, die keine Operationen vorschreibt, wird das Objekt markiert und [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[],"class_list":["post-2415","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2415","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=2415"}],"version-history":[{"count":2,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2415\/revisions"}],"predecessor-version":[{"id":2417,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2415\/revisions\/2417"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=2415"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=2415"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=2415"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}