Mit Design Patterns lassen sich Entwicklungszeit einsparen und Fehler vermeiden, die bei einer doppelten Programmierung auftreten könnten. Die wichtigsten Vorteile für den Einsatz von Entwurfsmustern lauten wie folgt:
höherer Grad der Wiederverwendung von Software
Dokumentation von vorhandenen und erprobten modularen Lösungsansätzen
Reduktion der Softwareentwurfs- und Programmierzeit
Adaption des Einsatzgebiets der Entwurfsmuster auf das konkrete Problem durch Anpassung
Verbesserung der Software-Verständlichkeit
Inhalte eines Design Patterns
Eine Beschreibung eines Entwurfsmusters sollte dabei folgende Elemente enthalten:
Name des Entwurfsmusters
Bestehend aus ein bis zwei Begriffen, die als Handler für die Beschreibung des Problems stehenBeschreibung des Entwurfsproblems und dessen Kontext
Enthält die Information, wann und wo dieses Entwurfsmuster eingesetzt werden sollte (Intention/ Motivation/ Applikation des Design Patterns). Es erklärt die Problemstellung und dessen Kontext, wie beispielsweise die Beschreibung des Design-Problems und eine Liste der Bedingungen, die für eine sinnfällige Anwendung erfüllt sein müssen.Lösungsbeschreibung des Entwurfsmusters
Enthält eine Auflistung der Elemente (zum Beispiel Klassen und Objekte) und wie deren Anordnung aussehen kann, den Entwurf, die Beziehungen zu anderen Elementen, die Verantwortlichkeiten (etwa bei einem Architekturentwurf) und die Zusammenarbeit. Diese Beschreibung sollte einen allgemein anwendbaren Ansatz des Entwurfsmusters darstellen.Ergebnisbeschreibung und Bewertung (Konsequenz(en)) der Anwendung des Entwurfsmusters
Dient der Evaluierung von Kosten und Nutzen dieses Patterns. Sie informiert unter anderem über den Speicher- und Zeitaufwand und kann für eine Abschätzung der Ressourcennutzung von CPU-Zeit vs. Speicheraufwand verwendet werden.
Entwurfsmuster lassen sich zu einer Gruppe zusammenfassen, für die diese Methode bei der Erstellung der Software-Architektur und der objektorientierten Programmierung (OOP) eingesetzt werden kann. Je nach Problemstellung ist das passende Software-Design aus der passenden Entwurfsfamilie auswählbar.
Typische Entwurfsfamilien
Erzeugendes Muster (Creational Design Pattern)
Befasst sich mit der Objekt-Erzeugung.Strukturelles Muster (Structural Design Pattern)
Beschreibt die Komposition von Klassen und Objekten.Verhaltensmuster (Behavioral Design Pattern)
Beschreibt die interaktive Kommunikation zwischen Objekten, das generische/individuelle Verhalten eines Objektes und die Verteilung der Verantwortlichkeiten.
Der Geltungsbereich des Entwurfsmusters definiert deren Anwendung:
Klassen
Objekte
Module
Zielplattform von Entwurfsmustern
Entwurfsmuster können auf verschiedenen Plattformen angewendet werden, sprich auf PC-basierenden und Embedded-Systemen. Bei eingebetteten Systemen (zum Beispiel Prozesssteuerungssoftware, die in Mikrocontrollern mit Echtzeitanforderungen abgearbeitet wird) ist ein wichtiger Aspekt beim Einsatz der Entwurfsmuster der Ressourcenverbrauch in Form von CPU-Rechenzeit und dem dazu benötigten Speicherplatz (Programm- und Datenspeicher).
Liste von Entwurfsmustern
Erzeugungsmuster
- Entwurfsmuster Fabrikmethode (Factory Method Design Pattern)
- Entwurfsmuster Abstrakte Fabrik (Abstract Factory Design Pattern)
- Entwurfsmuster Prototyp (Prototype Design Pattern)
- Entwurfsmuster Singleton (Singleton Design Pattern)Strukturmuster
- Entwurfsmuster Adapter (Adapter Design Pattern)
- Entwurfsmuster Dekorierer (Decorator Design Pattern)
- Entwurfsmuster Proxy (Proxy Design Pattern)Verhaltensmuster
- Entwurfsmuster Beobachter (Observer Design Pattern)
- Entwurfsmuster Befehl (Command Design Pattern)
- Entwurfsmuster Zustand (State/Event Design Pattern)
- Entwurfsmuster Schablonenmethode (Template Method Design Pattern)Weitere Muster
- Entwurfsmuster Fassade (Facade Design Pattern)
- Entwurfsmuster Kompositum (Composite Design Pattern)
- Entwurfsmuster Memento (Memento Design Pattern)
- Entwurfsmuster Zuständigkeitskette (Chain of Responsibility Design Pattern)
- Entwurfsmuster Fliegengewicht (Flyweight Design Pattern)
- Entwurfsmuster Iterator (Iterator Design Pattern)
- Entwurfsmuster Vermittler (Mediator Design Pattern)
Viele UML-Tools (Unified Modeling Language) liefern bereits eine Auswahl bekannter Patterns mit, die direkt in der Software beziehungsweise im Software-Modell verwendbar sind.
Fazit
Der Einsatz von wiederverwendbaren Entwurfsmustern kann zur Erstellung eines eigenen Pattern-Katalogs führen, um typische Missdeutungen zu vermeiden. Der Vorteil: Das Thema Design Pattern wird im Zuge der Erstellung des Katalogs im Team automatisch etabliert und kann seine Vorzüge so voll ausspielen.
Über den Autor
Thomas Batt studierte nach seiner Ausbildung zum Radio- und Fernsehtechniker Nachrichtentechnik. Seit 1994 arbeitet er in verschiedenen Branchen und Rollen im Bereich Embedded-/Realtime-Systementwicklung. 1999 wechselte Batt zu MicroConsult. Dort verantwortet er heute als zertifizierter Trainer und Coach die Themenbereiche Systems/Software Engineering für Embedded-/Realtime-Systeme sowie Entwicklungsprozessberatung.