Мост и шаблон проектирования адаптера

Меня спросил коллега о шаблоне проектирования моей реализации службы Windows WCF в ASP.net клиентское приложение, и я действительно не мог сказать, является ли это Мостом или Адаптером !

Вот реализация:

  • Я получил контракт службы
  • Определил новый интерфейс, аналогичный моему контракту данных WCF
  • Я создал клиент WCF и обернул его внутри нового интерфейса
  • Сопоставил новые операции интерфейса для исходного клиента WCF (здесь я выполняю некоторую регистрацию/обработку ошибок)

Я всегда думал об этом как о реализации шаблона Адаптер, но на самом деле я не могу сказать, почему это не так. это Мост!

Я прочитал все сообщения здесь в SO, GoF и википедии, но это действительно не имеет смысла!

Насколько я понимаю, оба шаблона указывают на существующий тип, оба отделяют абстракцию от ее реализации. Я что-то упустил?

Вот из GoF:

Основное различие между этими шаблонами заключается в их назначении. Адаптер фокусируется на устранении несовместимости между двумя существующими интерфейсы. Он не фокусируется на том, как эти интерфейсы реализованы, он также не рассматривает, как они могут развиваться независимо. это способ заставить два независимо разработанных класса работать вместе без повторная реализация того или иного. Мост, с другой стороны, соединяет абстракция и ее (потенциально многочисленные) реализации. Это обеспечивает стабильный интерфейс для клиентов, даже если позволяет изменять классы, которые его реализуют. Он также поддерживает новые реализации, такие как система развивается.

Я не совсем понимаю приведенное выше утверждение.

  1. Означает ли это, что если я изменю адаптацию или изменю реализацию исходного интерфейса во время разработки, то это Bridge Pattern?
  2. Различия кажутся тривиальными. Есть ли другие различия в реализация/воздержание?
  3. Как можно сказать, какая реализация используется после разработка?
  4. Может ли кто-нибудь привести мне хороший пример шаблона моста и как его можно быть изменены в течение жизненного цикла программного обеспечения?

Обновление:

Снова от GoF:

Помните, что адаптер заставляет два существующих интерфейса работать вместе. в отличие от определения совершенно нового.

Означает ли это, что изменение существующего интерфейса, чтобы он мог работать с другим интерфейсом, является реализацией Адаптера?

Обновление 2:

Только что нашел эту невероятную статью: Иллюстрированные шаблоны проектирования GOF в C#

Это настоящая структура шаблона моста:

Я упустил тот факт, что шаблон моста позволяет комбинировать различные абстракции и реализации и расширятьих независимо enter image description here

19
задан Dave Schweisguth 12 February 2016 в 05:31
поделиться