Zurück zur Skill-Übersicht

Skill-Wissen und Projektmarkt

Design Patterns

Freelancer, Projekte, Experten und Wissen rund um Design Patterns.

Kategorie

Programmiersprachen

Einordnung

Design Patterns Freelancer, Projekte, Experten und Wissen auf jobtic.com

Design Patterns gehört zu den gefragtesten Kompetenzen im modernen IT-Projektmarkt. Unternehmen, Recruiter, Projektanbieter und Agenturen suchen kontinuierlich nach qualifizierten IT-Freelancern, Beratern, Entwicklern, Consultants, Administrators, Engineers und Spezialisten mit Erfahrung in Design Patterns.

Auf jobtic.com finden Unternehmen und Freelancer eine moderne Plattform für IT-Projekte, Projektvermittlung, Freelancer-Profile, Experten-Suche, Projektakquise und berufliche Vernetzung rund um Design Patterns und viele weitere Technologien, Tools, Systeme, Methoden und IT-Bereiche.

Wikipedia

Entwurfsmuster

Artikel öffnen
Dieser Artikel behandelt die Lösungsschablonen für wiederkehrende Entwurfsprobleme. Für das gleichnamige Buch siehe Entwurfsmuster (Buch).

Entwurfsmuster (englisch design patterns) sind bewährte Lösungsschablonen für wiederkehrende Entwurfsprobleme sowohl in der Architektur als auch in der Softwarearchitektur und -entwicklung. Sie stellen damit eine wiederverwendbare Vorlage zur Problemlösung dar, die in einem bestimmten Zusammenhang einsetzbar ist. In den letzten Jahrzehnten hat der Ansatz der Entwurfsmuster auch zunehmendes Interesse in weiteren Bereichen gefunden, beispielsweise in der Mensch-Computer-Interaktion, dem Webdesign und dem Game-Design sowie der Pädagogik und Didaktik, insbesondere dem E-Learning.[1] Ursprünglich wurde der Begriff in der Architektur von Christopher Alexander verwendet.[2]

Arten von Entwurfsmustern

Das Entwurfsmuster Prototyp mit der Unified Modeling Language (UML)

Es gibt verschiedene Typen von Entwurfsmustern. Ursprünglich wurden folgende Typen vom Autorenquartett Gang of Four (GoF)[3] unterschieden:

Dienen der Erzeugung von Objekten. Sie entkoppeln die Konstruktion eines Objekts von seiner Repräsentation. Die Objekterzeugung wird gekapselt und ausgelagert, um den Kontext der Objekterzeugung unabhängig von der konkreten Implementierung zu halten, gemäß der Regel: „Programmiere auf die Schnittstelle, nicht auf die Implementierung!“
Erleichtern den Entwurf von Software durch vorgefertigte Schablonen für Beziehungen zwischen Klassen.
Modellieren komplexes Verhalten der Software und erhöhen damit die Flexibilität der Software hinsichtlich ihres Verhaltens.

Später kamen noch weitere Typen für diejenigen Entwurfsmuster, die in keine der drei genannten Typen passten, hinzu. Darunter beispielsweise:

Dienen der Ablage und dem Zugriff von Objekten und deren Beziehungen in einer relationalen Datenbank.[4]
Für die Erstellung, die Weiterleitung und die Umwandlung von Daten in Form von Nachrichten, inklusive der dazu benötigten Nachrichtenkanäle und Nachrichtenendpunkte, sowie Komponenten für die Systemverwaltung.

Geschichte

Ein Ansatz für Entwurfsmuster wurde vom Architekten Christopher Alexander 1964 in Notes on the synthesis of form dargestellt. Zwischen 1977 und 1979 stellte er dann (in einer auf Vitruv zurückgehenden Tradition) eine Sammlung von Entwurfsmustern zusammen.[5] Die Hauptaufgabe dieser Muster war es, die Bewohner der zu bauenden Strukturen in den Entwurfsprozess mit einzubinden. In der Architektur hat sich diese Idee jedoch bei weitem nicht so verbreitet wie später in der Softwareentwicklung.

Kent Beck und Ward Cunningham griffen 1987 die Ideen Alexanders aus der Architektur auf und entwickelten Entwurfsmuster für die Erstellung von grafischen Benutzeroberflächen in Smalltalk. Ein Jahr später begann Erich Gamma mit seiner Promotion an der Universität Zürich über die generelle Übertragung dieser Methode auf die Softwareentwicklung. Parallel dazu arbeitete James Coplien in den Jahren 1989 bis 1991 an musterähnlichen Idiomen für C++ und veröffentlichte 1991 sein Buch Advanced C++ Idioms.

Erich Gamma beendete im selben Jahr seine Promotion und ging im Anschluss in die Vereinigten Staaten. Dort brachte er 1994 zusammen mit Richard Helm, Ralph Johnson und John Vlissides das Buch Design Patterns – Elements of Reusable Object-Oriented Software heraus, in dem 23 Entwurfsmuster beschrieben sind. Die vier Autoren sind unter Entwicklern weltweit auch unter ihrem Spitznamen Gang of Four (Viererbande), kurz GoF, bekannt und verhalfen mit ihrem Buch den Entwurfsmustern zu einem Durchbruch. Gelegentlich wird GoF auch als Verweis auf das besagte Buch verwendet. Anders als Alexander, der seine Muster vor allem für Laien geschrieben hatte, richten sich die GoF-Muster an Softwareentwickler und nicht an Benutzer.

Anforderungen und Nutzen

Ein gutes Muster sollte:

  • ein oder mehrere Probleme lösen,
  • ein erprobtes Konzept bieten,
  • auf realen Designs basieren,
  • mehr Vorteile als Nachteile aufweisen
  • über das rein Offensichtliche hinausgehen,
  • den Benutzer in den Entwurfsprozess einbinden,
  • Beziehungen aufzeigen, die tiefergehende Strukturen und Mechanismen eines Systems umfassen.

Entwurfsmuster beinhalten in der Regel Referenzen auf andere Muster. Mithilfe dieser ist es möglich, Mustersprachen zu entwickeln.

Der primäre Nutzen eines Entwurfsmusters liegt in der Beschreibung einer Lösung für eine bestimmte Klasse von Entwurfsproblemen. Weiterer Nutzen ergibt sich aus der Tatsache, dass jedes Muster einen Namen hat. Dies vereinfacht die Diskussion unter Entwicklern, da man abstrakt über eine Struktur sprechen kann. So sind etwa Software-Entwurfsmuster – im Gegensatz zu Idiomen – zunächst einmal unabhängig von der konkreten Programmiersprache.

Wenn der Einsatz von Entwurfsmustern dokumentiert wird, ergibt sich ein weiterer Nutzen dadurch, dass durch die Beschreibung des Musters ein Bezug zur dort vorhandenen Diskussion des Problemkontextes und der Vor- und Nachteile der Lösung hergestellt wird.

Nachteile

Der erfolgreiche Einsatz von Entwurfsmustern in der Vergangenheit kann dazu verleiten, die Entwurfsmuster als Wunderwaffe und Garant für gutes Design anzusehen. Unerfahrene Entwickler können geneigt sein, möglichst viele bekannte Muster zu verwenden, und dabei übersehen, dass in ihrem Fall vielleicht eine elegantere Lösung ohne den Einsatz von Mustern möglich wäre. Entwurfsmuster garantieren nicht, dass der Entwurf gut ist. Insofern ist die Anwendung zu vieler oder ungeeigneter Entwurfsmuster ein Antimuster.

Musterkataloge

Entwurfsmuster werden üblicherweise nach dem Vorbild der Bücher von Christopher Alexander und der Gang of Four in sogenannten Musterkatalogen (englisch „Design Pattern Catalogs“) gesammelt. Diese beschreiben die einzelnen Muster katalogartig anhand ihrer Eigenschaften. Diese Eigenschaften sind beispielsweise beim Buch Design Patterns – Elements of Reusable Object-Oriented Software folgende: Aufgabe, Andere Namen, Motivation, Anwendbarkeit, Struktur, Teilnehmer, Kollaborationen, Konsequenzen, Implementierung, Beispielcode, bekannte Verwendungen, verwandte Muster.

Neben dem Entwurfsmusterkatalog der Gang of Four mit den oben genannten Erzeugungsmustern, Strukturmustern und Verhaltensmustern, gibt es eine Reihe weiterer Kataloge. Zu diesen zählen die Bücher Enterprise Integration Patterns, Patterns of Enterprise Application Architecture, Pattern-Oriented Software Architecture, Volume 1, A System of Patterns, Refactoring To Patterns sowie die Core J2EE Patterns. (Siehe dazu auch Abschnitt Literatur unten.)

Liste von Mustern

Die folgende Liste enthält Entwurfsmuster der Gang of Four, funktionale Verhaltensmuster von Stuart Sierra[6] sowie andere Entwurfsmuster aus anderen Katalogen. Die ersten drei Abschnitte stellen die Teilmengen dar, in die die Entwurfsmuster im Buch Design Patterns kategorisiert wurden. Der vierte Abschnitt enthält Muster für die objektrelationale Abbildung die insbesondere von Martin Fowler geprägt wurden.[4] Der fünfte Abschnitt enthält Entwurfsmuster für die Kommunikation zwischen Anwendungen, die von Gregor Hope und Bobby Woolf im Buch Enterprise Integration Patterns[7] beschrieben wurden. Der sechste Abschnitt enthält Entwurfsmuster, die sich in keine der ersten fünf Abschnitte einordnen lassen. Die Liste ist nicht vollständig und überschneidet sich teilweise mit Architekturmustern.

1. Erzeugungsmuster  (englisch creational patterns)


  2. Strukturmuster  (englisch structural design patterns)


  3. Verhaltensmuster  (englisch behavioral design patterns)


  4. Muster für objektrelationale Abbildung


  5. Nachrichtenübermittlungsmuster  (englisch Messaging Patterns)


  6. Weitere Muster

Andere Arten von Mustern

Die Arbeiten der Gang of Four haben viele Autoren zu weiteren Veröffentlichungen angeregt. Daraus entstand auch die Problematik, dass ein Muster sich nicht mehr ohne weiteres als Entwurfsmuster klassifizieren lässt. Vielmehr gibt es graduelle Unterschiede in der Granularität von Mustern. So wird etwa das Model-View-Controller-Muster (MVC) manchmal als Architekturmuster, manchmal als Entwurfsmuster eingesetzt.[8]

Beispiele für Muster, die keine Entwurfsmuster sind:

Antimuster

→ Hauptartikel: Anti-Pattern

Wo Entwurfsmuster in der Software-Entwicklung allgemein übliche und bekannte Lösungsansätze sind, um Probleme zu lösen, so sind Antimuster Negativ-Beispiele von bereits durchgeführten Lösungen, die Hinweise darauf geben, welche Fehler vermieden werden sollten.

Nachdem bei der Softwareentwicklung immer mehr von positiven Erfahrungen von erfolgreich abgeschlossenen Aufgabenstellungen profitiert wurde, konzentrierte man sich auch darauf, die Negativbeispiele, also wiederkehrende Fehler bei der Software-Entwicklung, zu identifizieren und zu dokumentieren.

Siehe auch

Literatur

Deutsch
  • Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal: Pattern-orientierte Softwarearchitektur. Ein Pattern-System. Addison-Wesley-Longman, Bonn 1998, ISBN 3-8273-1282-5.
  • Helmut Leitner: Mustertheorie – Einführung und Perspektiven auf den Spuren von Christopher Alexander. Verlag Nausner & Nausner, Graz 2007, ISBN 978-3-901402-50-0.
  • Florian Siebler: Design Patterns mit Java: Eine Einführung in Entwurfsmuster. Hanser-Verlag, 2014, ISBN 978-3-446-43616-9.
Englisch

Weblinks

Commons: Entwurfsmuster – Album mit Bildern, Videos und Audiodateien
Wikibooks: Entwurfsmuster – Lern- und Lehrmaterialien

Einzelnachweise

  1. https://hillside.net/patterns/patterns-catalog
  2. Andreas Zeller: Entwurfsmuster auf st.cs.uni-saarland.de (PDF, S. 2.)
  3. a b c d e f g h i j k l m n o p q r s t u Erich Gamma, Richard Helm, Ralph E. Johnson, John Vlissides: Entwurfsmuster. Elemente wiederverwendbarer objektorientierter Software. Addison-Wesley, München 2004, ISBN 3-8273-2199-9 (englisch: Design Patterns. Elements of Reusable Object-Oriented Software.).
  4. a b c d e f g h i j k l m n o Martin Fowler: Patterns of Enterprise Application Architecture. Addison-Wesley-Longman, Amsterdam 2002, ISBN 0-321-12742-0.
  5. Christopher Alexander, Sara Ishikawa, Murray Silverstein, Max Jacobson, Ingrid Fiksfahl-King, Shlomo Angel: Eine Muster-Sprache. Städte, Gebäude, Konstruktion. Löcker, Wien 1995, ISBN 3-85409-179-6.
  6. a b c d e f g h i j Stuart Sierra – Functional Design Patterns
  7. Gregor Hohpe, Bobby Woolf: Enterprise Integration Patterns. Designing, Building and Deploying Messaging Solutions. Addison-Wesley, Boston 2003, ISBN 0-321-20068-3 (englisch).
  8. Kamal Wickramanayake: Is MVC a design pattern or an architectural pattern? In: Software View. 17. Juli 2010, abgerufen am 16. Dezember 2016 (englisch).
Erzeugungsmuster

Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool

Strukturmuster

Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter

Verhaltensmuster

Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel

Muster für objekt-
relationale Abbildung

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

Nachrichten-
übermittlungsmuster
andere

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

Wikipedia

Dieser Text basiert auf dem Artikel Entwurfsmuster aus der freien Enzyklopädie Wikipedia und steht unter der Lizenz Creative Commons CC-BY-SA 3.0 Unported. Eine Liste der Autoren ist in der Wikipedia verfügbar.

Design Patterns auf jobtic.com

Programmiersprachen

Experten finden

jobtic.com verbindet IT-Freiberufler, Selbstständige, Consultants, Projektanbieter, IT-Dienstleister und Unternehmen in einer zentralen IT-Projektbörse für den deutschsprachigen Markt. Die Plattform unterstützt die Suche nach Design Patterns Freelancern, Design Patterns Projekten, Contracting-Einsätzen, Remote-Projekten, IT-Jobs, Interim-Rollen, technischen Experten und spezialisierten Beratern.

Chancen entdecken

Freelancer profitieren von einer professionellen Präsentation ihrer Expertise im Bereich Design Patterns und erhalten Zugriff auf aktuelle Projektangebote, Projektanfragen und neue Karrierechancen im IT-Freelancer-Markt. Durch moderne Such- und Filterfunktionen lassen sich passende Projekte, Auftraggeber, Recruiter und Kontakte schnell identifizieren.

Wissen einordnen

Neben der Projekt- und Expertenplattform bietet jobtic.com umfangreiche Informationen, Hintergründe und Wiki-Inhalte rund um Design Patterns. Dazu gehören Grundlagen, Definitionen, Einsatzbereiche, Entwicklungen, Versionen, Methoden, technische Zusammenhänge, Best Practices und aktuelle Marktinformationen zu Design Patterns.

Vernetzung stärken

Unsere jobtic-Übersicht zu Design Patterns kombiniert Wissensdatenbank, Projektbörse, Freelancer-Verzeichnis, Experten-Suche und Projektmarkt in einer zentralen Plattform. Besucher finden hier sowohl Informationen zu Design Patterns als auch passende Freelancer, Berater, Entwickler, Consultants, Administratoren, Support-Spezialisten und aktuelle IT-Projekte mit Bezug zu Design Patterns.

Kontakte aufbauen

jobtic.com unterstützt Freelancer und Unternehmen dabei, schneller passende Projekte, Experten und Geschäftskontakte im Bereich Design Patterns zu finden. Egal ob Projektakquise, Expertenvermittlung, Freelancer-Suche, Contracting, IT-Consulting oder spezialisierte Projektbesetzung - jobtic.com bietet die passende Plattform für den modernen IT-Projektmarkt.

Zentral vernetzen

Wer nach Design Patterns Freelancern, Design Patterns Experten, Design Patterns Projekten, Design Patterns Beratern, Design Patterns Consulting, Design Patterns Contracting, Design Patterns Projektbörse, Design Patterns Freelancer-Profilen oder aktuellen Entwicklungen rund um Design Patterns sucht, findet auf jobtic.com eine zentrale Anlaufstelle für Wissen, Projekte und professionelle Vernetzung im IT-Umfeld.

Passende Projekte zu Design Patterns

Mehr Projekte

Projekte veröffentlichen

Unternehmen können Projekte mit Anforderungen, Laufzeiten, Technologien, Einsatzorten, Remote-Anteilen, Budgetrahmen und Projektbeschreibungen veröffentlichen. Gleichzeitig ermöglicht jobtic.com die gezielte Suche nach verfügbaren Design Patterns Spezialisten mit passenden Erfahrungen, Branchenkenntnissen und technischen Fähigkeiten.

Aktuell sind keine sichtbaren Projekte verfügbar.