Im Rahmen der Vorlesung wird ein Entwurfsmuster, das „Observer-Pattern“, vorgestellt. Da im online verfügbaren Foliensatz nur das UML-Diagramm enthalten ist, nicht aber das Schema zur Verdeutlichung eines Anwendungsfalles, seien beide Abbildungen nachfolgend wiedergegeben.
<figure fig:observerpatternmotivation>
<caption>Beispiel für einen Anwendungsfall des „Observer“-Entwurfsmusters. Es gibt mehrere unterschiedliche Ansichten bzw. Darstellungsweisen von Daten, die in einem Objekt gespeichert sind. Das Datenobjekt sollte die Ansichten benachrichtigen, wenn sich die Daten ändern, die Ansichten können die Daten vom Datenobjekt abfragen und Änderungen der Daten (z.B. durch Nutzereingaben) an das Datenobjekt zurückmelden. Für ein UML-Diagramm des „Observer“-Entwurfsmusters, das zur Umsetzung dieser Situation verwendet werden kann, vgl. Abb. fig:observerpattern. Die Idee stammt aus {[gamma-e-1995]}, S. 293</caption>
</figure>
<figure fig:observerpattern>
<caption>UML-Diagramm einer Realisierungsmöglichkeit des „Observer“-Entwurfsmusters. Es gibt zwei abstrakte Klassen (Subject und Observer) und zwei davon durch Vererbung abgeleitete konkrete Klassen (ConcreteSubject und ConcreteObserver). In einem Subject können beliebig viele Observer registriert werden, die dann bei einer Änderung benachrichtigt werden. Ein Observer beobachtet hingegen immer ein konkretes Subject und bezieht bei einer Benachrichtigung den aktuellen Zustand dieses Objektes. Das Diagramm ist gegenüber dem Beispiel in {[gamma-e-1995]} S. 294 vereinfacht, es stellt nur eine mögliche Realisierung dieses Entwurfsmusters dar. Ein konkretes Beispiel für einen möglichen Anwendungsfall ist in Abb. fig:observerpatternmotivation dargestellt.</caption>
</figure>
Eine kommentierte und handverlesene Liste mit weiterführender Literatur zum Thema. Die Auswahl ist zwangsläufig subjektiv.
Der „Klassiker“ zum Thema Entwurfsmuster ist mit Sicherheit das Werk der „Viererbande“: „Design Patterns“ von Gamma, Helm, Johnson und Vlissides {[gamma-e-1995]}. Ein Buch, das zwei wesentliche Konzepte der Entwicklung objektorientiert programmierter Software zusammenführt, ist „Refactoring to Patterns“ von Joshua Kerievsky {[kerievsky-j-2005]}. Er greift gleichermaßen auf das Werk der „Viererbande“ wie auf das grundlegende Werk zum Refactoring von Martin Fowler {[fowler-m-1999]} zurück.
Einen etwas anderen Ansatz als die „Viererbande“ verfolgt Kent Beck in „Implementation Patterns“ {[beck-k-2007]}. Seine Muster decken einen wesentlich breiteren Bereich von Mustern ab als die hier vorgestellten Entwurfsmuster. Den Zusammenhang der schematischen Darstellung von Klassen und Objekten über UML und Entwurfsmustern thematisiert Craig Larman {[larman-c-2005]}. Darüber hinaus gibt es noch eine ganze Reihe weiterer Werke, die sich mit dem einen oder anderen speziellen Aspekt bzw. Anwendungsgebiet von Mustern befasst {[fowler-m-2003,beck-k-2004,evans-e-2004,meszaros-g-2007]}.
Der Ausgangspunkt für die Beschäftigung mit Mustern in der Softwareentwicklung lieferte das Werk „A Pattern Language“ des Architekten, Mathematikers und Systemtheoretikers Christopher Alexander {[alexander-c-1977]}.
<bibtex bibliography> sort=true </bibtex>