2.5.08

Klassifikation von Entwurfmustern

Ein Entwurfsmuster (design pattern) gibt eine bewährte generische Lösung für ein häufig wiederkehrendes Entwurfsproblem an, das in bestimmten Situationen auftritt. Entwurfsmuster;
  • unterstützen die Wiederverwendung von Lösungen,
  • dokumentieren existierende und erprobte Entwurfserfahrungen,
  • benennen und erklären wichtige Entwürfe,
  • helfen bei der Auswahl von Entwurfsalternativen,
  • verhelfen dem Entwerfer schneller zum richtigen Entwurf,
  • bieten ein gemeinsames Entwurfs-Vokabular und -Verständnis für eine Gruppe von Entwicklern.
Eine Klassifikation kann nach den Kriterien Zweck (purpose) und Geltungsbereich (scope) erfolgen.
Der Zweck gibt an, was ein Muster bewirkt.
Der Geltungsbereich gibt an, ob sich das Muster primär auf Klassen oder Objekte bezieht.
  • Ein erzeugendes Muster (creational pattern) befasst sich mit der Erzeugung von Objekten. Erzeugende Klassenmuster verschieben einen Teil der Objekterzeugung hin zu Unterklassen, während erzeugende Objektmuster einen Teil der Objekterzeugung zu anderen Objekten hin verschieben. (Beispiele: Factory Method, Abstract Factory, Singleton)
  • Ein strukturelles Muster (structural pattern) beschreibt die Komposition von Klassen und Objekten. Strukturelle Klassenmuster verwenden die Vererbung, um Klassen miteinander zu kombinieren, während strukturelle Objektmuster Wege angeben, um Objekte zusammenzufügen. (Beispiele: Adapter Class, Adapter (object), Bridge, Decorator, Facade, Proxy)
  • Ein Verhaltensmuster (behavioral pattern) beschreibt, wie Klassen oder Objekte miteinander kommunizieren und wie die Verantwortlichkeiten verteilt sind. Verhaltensmuster für Klassen benutzen die Vererbung, um Algorithmen und Kontrollflüsse zu beschreiben, während Verhaltensmuster für Objekte beschreiben, wie eine Gruppe von Objekten zusammenarbeitet, um eine Aufgabe auszuführen, die ein Objekt alleine nicht erledigen kann. (Beispiele: Template Method, Visitor, State, Strategy)
Glossar:
  • Klassenmuster: behandeln Beziehungen zwischen Klassen und Ihren Unterklassen. Diese werden durch Vererbung ausgedrückt und sind statisch (d.h. sie werden zur Überzetsungszeit [nicht während der Ausführung] festgelegt).
  • Objektmuster: beschreiben Beziehungen zwischen Objekten, die zur Laufzeit geändert werden können und dadurch dynamisch sind.
(Quelle: Balzert H., Lehrbuch der Software-Technik Software Entwicklung, ISBN: 3-8274-04080-0)

Nvidia's GauGan App

NVIDIA's GauGAN AI Machine Learning Tool creates photorealistic images from Simple Hand Doodling http://nvidia-research-mingyuliu.com/...