Was ist der Unterschied zwischen der Fassade und dem Adaptermuster?
Ich lese beide Definitionen, und Sie scheinen ziemlich das gleiche. Könnte jemand darauf hinweisen, was sind Ihre Unterschiede?
Dank
InformationsquelleAutor der Frage devoured elysium | 2010-06-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Fassade-Muster wiki-Seite hat eine kurze Notiz über dies.
Hörte ich eine Analogie, die Sie sollten darüber nachdenken, Ihre universal-Fernbedienung, die Sie eingerichtet haben, um die Arbeit mit all Ihren verschiedenen stereo-Systemen - Sie drücken die "auf" - und es stellt sich auf Ihrer Kabel-box, dem receiver und Ihrem TV-Gerät. Vielleicht ist es ein wirklich schickes Heimkino und es Dimmt die Lichter und zieht die Schatten zu. Das ist eine Fassade - eine Taste/Funktion, kümmert sich um eine komplizierte Reihe von Schritten.
Dem Adapter-Muster nur links zwei inkompatible Schnittstellen.
EDIT: EINE schnelle Analogie für das Adapter-Muster (basierend auf den Kommentaren), möglicherweise so etwas wie ein DVI-zu-VGA-adapter. Moderne Grafikkarten sind oft DVI, aber du hast noch einen alten VGA-monitor. Mit einem adapter, Stecker in Ihre video-Karte erwartet DVI-Eingang, und hat einen eigenen VGA-Eingang, Sie werden in der Lage sein, um Ihre alten monitor arbeiten mit Ihrer neuen Grafikkarte.
InformationsquelleAutor der Antwort awshepard
Adapter == macht eine eckige passt in ein rundes Loch.
Fassade == einem einzigen Bedienfeld, um die internen Komponenten.
InformationsquelleAutor der Antwort Edwin Buck
Ehrlich, viele Muster, die umgesetzt werden könnten die gleiche Weise programmgesteuert -- der Unterschied liegt im Vorsatz.
Dem Adapter design pattern gemeint ist, zu 'übersetzen' die Schnittstelle eine oder mehrere Klassen in eine Schnittstelle, die der client erwartet -- der adapter übersetzt die Aufrufe an die erwartete Schnittstelle in das eigentliche interface der wrapped-Klassen verwenden.
Dem Fassade-pattern wird verwendet, wenn eine einfachere Schnittstelle ist wollte (und auch umgesetzt werden könnten, die gleiche Weise, indem er die problematischen Klassen.) Sie würde nicht sagen, dass Sie mit einer Fassade, wenn der vorhandene Schnittstelle ist nicht kompatibel, nur wenn Sie brauchen, um es leichter lesbar, weniger schlecht konzipiert, usw.
InformationsquelleAutor der Antwort J. Burch
Fassade ist so konzipiert, organisieren mehrere Dienste hinter einer einzigen service-gateway. Ein adapter ist so konzipiert, um einen Weg, um eine bekannte Schnittstelle für den Zugriff auf eine unbekannte.
InformationsquelleAutor der Antwort Mike Burton
Fassade:
Ausbeute : ( aus journaldev Artikel von Pankaj Kumar)
Fassade Klassendiagramm:
Adapter:
Klassendiagramm des Adapter:
Finden Sie mehr details über den Adapter in diesem SE post:
Unterschied zwischen Bridge-Muster und Adapter-Muster
Wichtige Unterschiede:
Haben Sie einen Blick auf sourcemaking Artikel auch für ein besseres Verständnis.
InformationsquelleAutor der Antwort Ravindra babu
Wie üblich, gibt es ähnlichkeiten zwischen verschiedenen mustern. Aber ich würde es so sehen:
InformationsquelleAutor der Antwort Chris Lercher
Ich werde versuchen, dies zu erklären in einfachen Worten, ohne viel Formalität.
Stell dir vor, du hast einige domain-Klassen und von der Benutzeroberfläche, die Sie wollen, um mit Ihnen zu interagieren. Eine Fassade kann verwendet werden, um Funktionen, die aufgerufen werden kann, die UI-Schicht, so dass die UI Schicht nicht kennt, über alle domain-Klassen außer die Fassade. Das bedeutet, dass anstelle von aufrufen der Funktionen in die domain-Klassen Aufruf einer einzigen Funktion von der Fassade, die verantwortlich für den Aufruf der benötigten Funktionen aus den anderen Klassen.
Einen adapter, auf der anderen Seite, können verwendet werden, um die Integration von anderen externen Komponenten, die möglicherweise die gleiche Funktionalität, die Sie benötigen, aber Ihre Funktionen sind nicht genannt, ganz auf die gleiche Weise. Sagen wir du hast eine
Car
Klasse in Ihre Domäne, und Sie arbeiten mit einer externen Auto-Anbieter, hat eine Auto-Klasse definiert. In dieser Klasse haben Sie die Funktioncar.getDoors()
aber der externe Anbieter hat den Gegenwertcar.getNumDoors()
. Sie nicht ändern wollen, rufen Sie diese Funktion verwenden, so können Sie eine adapter-Klasse, um wickeln Sie die externe Auto-Klasse, so dass ein AufrufgetDoors()
an den adapter delegiertgetNumDoors()
von der externen Klasse.InformationsquelleAutor der Antwort Pin
Adapter-Muster ermöglicht es, zwei,die zuvor unvereinbar, Schnittstellen, miteinander zu arbeiten. Verfügt über 2 getrennte interfaces in spielen.
Dem Fassade-Muster nimmt eine Schnittstelle bekannt, dass low-level - /fine-grained, und wickelt es mit einem höheren level/natürlich genarbter Oberfläche. Hat eine einzelne Schnittstelle, die vereinfacht worden ist, indem er mit einem anderen.
InformationsquelleAutor der Antwort wyldebill
Adapter stellt zwei Schnittstellen zusammen arbeiten.
Fassade stellt eine einzelne Klasse in eine höhere und mehr begrenzt. Zum Beispiel, ein view-model-Fassade kann nur ausgesetzt werden, bestimmten nur-lese Eigenschaften, die von einem niedrigeren level-Klasse.
InformationsquelleAutor der Antwort Michael Finger
InformationsquelleAutor der Antwort Premraj
Wirklich ?
Habe ich bemerkt, dass der Begriff Adapter wird manchmal verwendet, um zu beschreiben, was in der Tat eine Strategievielleicht, weil das Wort mehr Ausdruckskraft.
Beispielsweise in Zend Frameworkalle Adapter Klassen sind in der Tat Implementierungen der Strategie Muster, weil Sie nur wrap-native-code-behind-Klassen, um verschiedene Verhaltensweisen.
Adapter werden Häufig verwendet, um wickeln Sie legacy oder "old-style" - code.
InformationsquelleAutor der Antwort mexique1
Lektüre all dies, ich muss sagen, dass der Zweck einer
Fassade ist Einfachheit
adapter ist Interoperabilität.
InformationsquelleAutor der Antwort Vladimir Kornea