Design Patterns

Design Patterns oder Entwurfsmuster bezeichnen wiederverwendbare Vorlagen zur Lösung von Problemen. Häufig sind sie auf den ersten Eindruck nicht ganz trivial. In dieser Kategorie möchte ich einen kurzen Überblick mit Codebeispielen zu diesem sehr interessanten und hilfreichen Thema anbieten. Die wichtigsten Entwurfsmuster sollten meines Erachtens in jedes Portfolio eines guten Entwicklers gehören. Viele arbeiten bereits unbewusst mit einigen der Design Patterns. Diese zu kennen und zu beherrschen hilft ein sauberes Anwendungsdesign zu erreichen und die Objektorientierung zu verbessern. Gegen Schnittstellen zu programmieren hilft modularen und leicht austauschbaren Code zu schaffen.

Model View Controller / MVC Pattern

Die Model View Controller Architektur gehört zu den aufwendigsten und bekanntesten Entwurfsmustern. Dies ist vielleicht auch der Grund warum ich mich lange gescheut habe einen Artikel zu diesem Thema zu verfassen. Ich hoffe daher im Folgenden eine kurze, aber verständliche Beschreibung bieten zu können.
Zudem wird anhand einer sehr simplen Implementatirung veranschaulicht, wie der Model View Controller funktioniert.

Visitor Pattern

Das Visitor Pattern erlaubt es eine Klasse oder auch eine ganze Objektstruktur um Funktionalitäten zu erweitern ohne diese direkt zu verändern. Die hinzukommende Logik wird im Visitor gekapselt. Die Klasse(n), welche eine Interaktion mit dem Visitor erlauben soll, muss jedoch verändert werden.

Command Pattern

Um Methoden nicht fest an eine Klasse zu binden, so dass diese zum Beispiel zur Laufzeit geholt oder ausgetauscht werden können, eignet sich das Command Pattern. Eine Aufgabe wird in einem Objekt gekapselt, um diese als Parameter zu übergeben oder in einer Queue zu registrieren.

Decorator Pattern

Das Decorator Pattern ermöglicht es ein Objekt zur Laufzeit zu erweitern oder dessen Methoden zu verändern. Dadurch erreicht man eine flexiblere Möglichkeit gegenüber statischer Vererbung, indem ein Objekt mit einem oder mehreren Dekorierern versehen wird.

Adapter Pattern

Ein Adapter im mechanischen Sinn dient der Verbindung zweier verschiedener Geräte. Diese Eigenschaft lässt sich auf Schnittstellen in der Programmierung ebenfalls anwenden. Das Adapter Pattern passt die API (Schnittstelle) einer gegebenen Klasse an die davon abweichende Erwartungen einer Implementierung an. Vorkommen könnte dies zum Beispiel beim Aufeinandertreffen zweier Bibliotheken von verschiedenen Autoren.

Observer Pattern

Ein Observer dient dazu, den Zustand einer Klasse zu überwachen und bestimmte Maßnahmen einzuleiten, falls sich dieser verändert. Im Beispiel geht es darum einen Wert einer Klasse auf das Überschreiten eines Limits hin zu observieren und entsprechende Meldungen auszugeben.

Template Method Pattern

Das Template Method Pattern hat nichts mit Templates im üblichen Sinne zu tun, soviel vorne weg. Es schreibt vielmehr den Ablauf eines Algorithmus vor, ohne dessen einzelne Komponenten zu implementieren. Die Bestandteile werden lediglich bedingt und in ihrer Reihenfolge festgelegt, können jedoch beliebig in den erbenden Klassen umgesetzt werden.

Composite Pattern

Das Compsosite Pattern (Kompositum - "Zusammengesetztes") ermöglicht es einen Aufruf aus Kommandos verschiedener Klassen zusammenzusetzen. Die Kommandos werden beim Kompositum registriert und bilden zusammen wiederum ein Kommando ab. Dadurch lässt sich eine sehr flexible Schachtelung erreichen.

Registry Pattern

Das Registry Pattern bietet trotz seiner Einfachheit ein komfortables klassenübergreifendes Daten Handling. Er ermöglicht der Applikation Daten abzulegen um diese an völlig anderer Stelle wieder zu erreichen ohne diese aufwendig "mitzuschleifen".

Singleton Pattern

Mit Hilfe des Singleton Patterns ist es möglich ein Klasse so umzuschreiben, dass diese nur einmalig instanziiert werden kann. Die Erzeugung der Instanz erfolgt dabei nicht über nen Operator new sondern durch eine statische Methode - in den meisten Fällen getInstance().

Syndicate content

Tags