---
title: 'DESIGN PATTERN kompakt'
url: 'https://tutego.de/blog/javainsel/2013/09/design-pattern-kompakt'
markdown: 'https://tutego.de/blog/javainsel/2013/09/design-pattern-kompakt.md'
date: '2013-09-29'
description: '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ät einer Klasse nicht durch Vererbung, sondern d…'
taxonomy:
  category:
    - Allgemein
---

# DESIGN PATTERN kompakt

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## DESIGN PATTERN kompakt

29.09.2013 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

### 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ät 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 bekommt somit einen Typ.

**Immutable *Abstract Factory***Die Zustände eines Objekts lassen sich nicht mehr verändern. Unveränderbare Objekte.

**Typsicherer Aufzählungen**Lasse Konstanten typsicher sein, dass keine Verwechselungen der Reihenfolge, und der Inhalte auftreten.

**Null-Objekt *Null object***Implementiere die Schnittstelle ohne Funktionalität.

**Objekt-Pool *`Object` Pool***Halte teuer zu erzeugende Objekte in einem Objekt-Pool.

### Erzeuger-Pattern (Creational Pattern)

**Abstrakte Fabrik *Abstract Factory***Stelle eine Schnittstelle bereit, um eine Familie von verwandten Objekten zu erzeugen, ohne die konkreten Klassen zu offenbaren.

**Erbauer *Builder***Trenne die Erzeugung und die Repräsentation eines komplexeren Objektes, so dass sich die Konstruktion auch mit anderen Repräsentationen durchführen lasst.

**Fabrikmethode *Factory Method***Stelle für die Erzeugung von Objekten eine Schnittstelle bereit, lass aber eine Fabrik entscheiden, welche Unterklassen erzeugt wird.

**Prototyp *Prototype***Lege durch eine Prototyp fest, welche Objekten zu erzeugen sind und erzeuge neue Objekte als Kopie dieses Prototyps.

**Singleton**Stelle sicher, dass es nur ein Exemplar eine Klasse gibt. Dieses lässt sich durch eine statische Funktion erfragen.

### Struktur-Muster (Structural Pattern)

**Adapter**Passe die Schnittstelle eine Klasse auf die Schnittstelle einer anderen Klasse an. So können Klassen zusammenarbeiten, die sonst wegen inkompatibler Schnittstellen nicht miteinander zusammenarbeiten könnten.

**Brücke *Bridge***Löse die Abstraktion von der Implementierung, so dass beide unabhängig verändert werden können.

**Kompositum *Composite***Zusammengesetzte Objekte bilden über eine Teil/Ganzes-Beziehung eine Baumstruktur. Die Blätter und Knoten sollen gleich behandelt werden können.

**Dekorator *Decorator***Ein Objekt kann (auch dynamisch) weitere Verantwortlichkeiten enthalten.

**Fassade *Facade***Stelle eine einfache Schnittstelle für ein komplexes System bereit. Damit wird das tiefer liegende System einfacher zu nutzen.

**Fliegengewicht *Flyweight***Behandle eine große Menge kleiner Objekte effizient, in dem unveränderliche Objekte gemeinsam genutzt werden.

**Proxy**Stelle einen Stellvertreter für ein Objekt bereit.

### Verhaltsmuster (Behavioral Pattern)

**Verantwortungskette*****Chain Of Responsibility***Gehe eine Kette von Objekten durch und frage sie, ob sie eine Anfrage annehmen. Entkopple dadurch Sender und Empfänger.

**Kommando*****Command***Eine Operation wird als Objekt verpackt.

**Interpreter**Definiere zu einer Sprache eine Grammatik und baue einen Interpreter, der Sätze der Sprache erkennt.

**`Iterator`**Ermögliche ein sequenzielles Ablaufen einer Datensammlung ohne die interne Repräsentation der Daten freizugeben.

**Vermittler *Mediator***Entkopple Objekte, damit sie sich nicht mehr direkt kommunizieren müssen.

**Memento**Speichere ohne Freigabe der inneren Struktur den internen Zustand eines Objektes um ihn später wieder Herstellen zu können.

**Beobachter*****Observer***Definiere eine 1:n-Beziehung zwischen Objekten, so dass bei einer Zustandsänderung die Interessenten automatisch informiert werden.

**Zustand*****State***Erlaube bei einer Änderung des Zustandes eine Änderung des Verhaltens.

**Strategie*****Strategy***Definiere für jeden Algorithmus (Strategie) eine Klasse, die dann später vom Klienten genutzt werden kann.

**Schablonenmethode *Template Methode***Definierte das Skelett einer Anwendung durch eine Reihe von Operationen und verschiebe die Implementierung der Operationen auf die Unterklassen.

**Besucher*****Visitor***Trenne Algorithmus und Datenstruktur voneinander, sodass sich insbesondere Verhalten anpassen lässt, ohne die Klasse für die Datenstruktur anfassen zu müssen.

### Links

- [Patterns for Java and Distributed Computing](http://www.cmcrossroads.com/bradapp/javapats.html)
- [Design Patterns](http://home.earthlink.net/~huston2/dp/patterns.html) (Vince Huston)
- [Cetus Links Patterns](http://www.cetus-links.org/oo_patterns.html)
- [Croft’s Design Patterns In Java](http://www.alumni.caltech.edu/~croft/research/java/pattern/)
- [Industrial Logic Patterns Page](http://industriallogic.com/patterns/)
- [Pattern Depot](http://www.patterndepot.com/pages/)
- [Portland Pattern Repository](http://c2.com/ppr/index.html)
- [Wiki Wiki Web](http://c2.com/cgi-bin/wiki)
- [Design Patterns Home Page](http://hillside.net/patterns/)
- [James Cooper’s The Design Patterns Java Companion](http://www.patterndepot.com/put/8/JavaPatterns.htm)
- [Design Patterns in Java AWT](http://www.soberit.hut.fi/tik-76.278/group6/awtpat.html)
- [A Catalogue of General-Purpose Design Patterns](http://wwwipd.ira.uka.de/~tichy/publications/Catalogue.doc)

> Was ist eigentlich kein Pattern? Bjarne Stroustrup, OOPSLA 95

Kategorien: [Allgemein](https://tutego.de/blog/javainsel/category/allgemein/)

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Der Report-Generator JasperReport](https://tutego.de/blog/javainsel/2013/09/der-report-generator-jasperreport.md)
- Next: [Sonnenfinsternis in der Schule. Die Eclipse-IDE erfolgreich im Informatikunterricht einsetzen](https://tutego.de/blog/javainsel/2013/09/sonnenfinsternis-in-der-schule-die-eclipse-ide-erfolgreich-im-informatikunterricht-einsetzen.md)
