Adapter passt eine bestimmte Klasse/Objekt an eine neue Schnittstelle an. Im ersten Fall wird in der Regel Mehrfachvererbung eingesetzt. Im letzteren Fall wird das Objekt von einem konformen Adapterobjekt umhüllt und weitergereicht. Das Problem, das wir hier lösen, ist das der nicht kompatible Schnittstellen .
Fassade ist eher ein einfaches Tor zu einer komplizierten Reihe von Funktionen. Sie schaffen eine Blackbox für Ihre Kunden, damit diese sich weniger Sorgen machen müssen, d.h. Schnittstellen zu vereinfachen .
Vollmacht bietet dieselbe Schnittstelle wie die Proxied-for-Klasse und erledigt in der Regel einige Aufgaben selbständig. (Anstatt also mehrere Kopien eines schweren Objekts zu erstellen X
Sie erstellen Kopien eines leichtgewichtigen Proxys P
die ihrerseits die X
und übersetzt Ihre Anrufe nach Bedarf). Sie lösen das Problem, dass der Kunde nicht mehr ein schweres und/oder komplexes Objekt verwalten .
Dekorateur wird verwendet, um Ihren Objekten mehr Schießpulver hinzuzufügen (beachten Sie den Begriff Objekte - Sie dekorieren Objekte normalerweise dynamisch zur Laufzeit). Sie verstecken/beeinträchtigen nicht die bestehenden Schnittstellen des Objekts, sondern sie einfach zur Laufzeit erweitern .
Nun, da Sie Dekorator involviert haben, werden Sie wahrscheinlich wissen wollen, warum die Betonung auf dem Wort Objekt liegt -- einige Sprachen (wie Java) erlauben einfach keine virtuelle Vererbung (d.h. Mehrfachvererbung, wie C++ es tut), um Ihnen zu erlauben, dies zur Kompilierzeit zu erreichen.
Da wir mehrere Erbschaften (und den gefürchteten Diamanten) eingefügt haben, werden Sie auf Folgendes achten mixins -- die sind geordnete lineare Verkettung von Schnittstellen um die Probleme der Mehrfachvererbung zu umgehen. Allerdings passen Mixins nicht so gut zusammen. Und wir enden mit Eigenschaften -- ja diese zustandslose kleine Verhaltensblöcke die in C++ immer wieder in Template-Parametern auftaucht. Traits versuchen, die Probleme der Komposition und Dekomposition von Verhalten auf elegante Weise anzugehen, ohne dabei auf Mehrfachvererbung oder geordnete Verkettung zu setzen.