Bridge vs. Adapter Design Pattern

Ich wurde in Frage gestellt von einem Kollegen über das design-Muster von meiner Implementierung eines WCF-windows-Dienst in einem ASP.net client-Anwendung, und ich konnte wirklich nicht sagen, ob es Brücke oder Adapter!

Hier ist die Umsetzung:

  • Ich erhalten haben, die den service-Vertrag
  • Definiert eine neue Schnittstelle, die ähnlich wie meine WCF Data Vertrag
  • Erstellte ich einen WCF-client und wickelte es in das neue interface
  • Zugeordnet, die neue interface-Operationen auf dem ursprünglichen WCF-client (habe ich einige logging/error-handling hier)

Ich dachte immer, es als eine Implementierung von Adapter Muster, aber ich kann wirklich nicht sagen, warum es ist nicht Brücke!

Ich habe alle posts gelesen hier, in SO, GoF und wikipedia, aber es macht wirklich keinen Sinn!

Aus meinem Verständnis, Sowohl Muster verweisen auf einen vorhandenen Typ, beide entkoppelt eine Abstraktion von Ihrer Implementierung bin ich fehlt ein Punkt?

Hier ist von GoF:

Den wichtigsten Unterschied zwischen diesen beiden mustern liegt in Ihren Absichten.
Adapter konzentriert sich auf die überwindung von Inkompatibilitäten zwischen zwei bestehenden
- Schnittstellen. Es konzentriert sich nicht auf, wie diese Schnittstellen implementiert werden,
noch ist es zu betrachten, wie Sie sich entwickeln könnte unabhängig. Es ist ein Weg,
von zwei unabhängig voneinander gestaltet-Klassen arbeiten zusammen, ohne
reimplementing eine oder das andere. Brücke, auf der anderen Seite, Brücken eine
Abstraktion und Ihrer (möglicherweise zahlreichen) Implementierungen. Es
bietet eine stabile Schnittstelle zu Kunden auch so können Sie variieren die
Klassen, die es implementieren. Sondern auch Platz für neue Implementierungen, die
das system entwickelt.

Verstehe ich nicht die Aussage,

  1. Bedeutet es, dass, wenn ich variieren die adaptee oder ändern Sie die Implementierung
    der ursprüngliche Schnittstelle zur design-Zeit, dann ist es Brücke Muster?
  2. Die Unterschiede klingt trivial, Ist es andere Unterschiede in der
    Umsetzung/abstcation?
  3. Wie kann jemand sagen, welche Implementierung verwendet wird nach
    Entwicklung?
  4. Kann mir jemand ein gutes Beispiel für bridge-pattern und wie kann es
    geändert werden, während der software-Lebenszyklus?

Update:

Wieder von GoF:

Denken Sie daran, dass ein adapter macht zwei bestehenden Schnittstellen arbeiten zusammen
im Gegensatz zu der Definition eines ganz neuen.

Bedeutet es, dass eine änderung der bestehenden Schnittstelle, so dass es funktionieren kann mit einer anderen Schnittstelle ist eine Implementierung von Adapter?

Update2:

Gerade diese unglaubliche Artikel: Illustrierte GOF-Design-Patterns in C#

Dies ist die wahre Brücke Prasseln Struktur:

Fehlte mir die Tatsache, dass die Brücke Muster können Sie kombinieren die verschiedenen Abstraktionen und Implementierungen und erweitern Sie unabhängig
Bridge vs. Adapter Design Pattern

Schreibe einen Kommentar