$KK(Entkopplung) $KKK(Fassade Pattern) Klassen kapseln Zustand und Operationen. Subsysteme kapseln Klassen. Subsysteme lassen sich mit Hilfe von Fassadenobjekten definieren. $B(Bilder,fassade1.gif,Ohne Fassade Pattern)
$B(Bilder,fassade1.gif,Mit Fassade Pattern) Vorteile des Fassade Patterns: * Die Clienten brauchen nur die Schnittstelle des Fassadenobjekts zu beachten. * Ziel der Fassadenklasse ist es, den Klienten eine einfachere Schnittstelle zu liefern. * Die Objekte und Schnittstellen innerhalb der Fassade können ohne Einfluss auf die Clienten geändert werden; damit habe ich eine Entkopplung von Subsystem und den Clienten. * Das Fassadenobjekt kann es i.a. nicht verhindern, daß der Client direkt auf eine Klasse innerhalb des Subsystems zugreift. Allerdings besteht die Gefahr, daß das Fassadenobjekt zu gross wird, das Fassadenpattern eignet sich nur für kleine Subsysteme. $KKK(Inverted Association Pattern) $B(Bilder,invasso1.gif, Zirkuläre Abhängikeit zweier Klassen) Das Inverted Association Pattern ist eine Verallgemeinerung des Beobachter Patterns, das weiter unten ausführlich erklärt wird. $B(Bilder,invasso2.gif,Abhängigkeit aufgelöst) Dieses Pattern wird genommen, wenn 2 Klassen gegenseitig voneinander abhängig sind, aber eine Richtung dominiert. Im unteren Beispiel geht der Methodenfluß hauptsächlich von Klasse A nach Klasse B. Die Idee ist, die nicht dominierende Richtung nur durch ein einfaches standardisiertes Protokoll zu realisieren. Eine abstrakte Klasse definiert das Protokoll. Die Klasse B teilt der Klassse A nur die notwendigsten Dinge über das standardisierte Protokoll mit. Siehe ausführliches Beispiel im Beobachter Pattern.