Я был допрошен коллегой по поводу шаблона проектирования моей реализации службы окон WCF в клиентском приложении ASP.net, и я действительно не мог сказать, является ли это Мост или Адаптер
Вот реализация:
- Я получил контракт на обслуживание
- Определен новый интерфейс, похожий на мой контракт с WCF
- Я создал WCF-клиент и завернул его в новый интерфейс
- Совместил новые операции с интерфейсом с исходным клиентом WCF (здесь я занимаюсь обработкой/обработкой ошибок)
Я всегда думал об этом как о реализации шаблона Adapter, но на самом деле я не могу сказать, почему он не является Мостом!
Я прочитал все сообщения здесь, в SO, GoF и wikipedia, но это действительно бессмысленно!
По моему мнению, оба шаблона указывают на существующий тип, оба отделяют абстракцию от его реализации. Я пропущу точку?
Здесь из GoF:
Ключевое различие между этими шаблонами заключается в их намерениях. Адаптер фокусируется на разрешении несовместимости между двумя существующими интерфейсы. Он не фокусируется на том, как реализуются эти интерфейсы, и не рассматривает, как они могут развиваться самостоятельно. Это путь создания двух независимо разработанных классов переопределение того или другого. Мост, с другой стороны, мосты абстракции и ее (потенциально многочисленных) реализаций. Это обеспечивает стабильный интерфейс для клиентов, даже если он позволяет вам изменять классы, которые его реализуют. Он также учитывает новые система развивается.
Я не полностью понимаю приведенное выше утверждение,
- Означает ли это, что если я изменю адаптацию или изменим реализацию исходного интерфейса во время разработки, то это Bridge Pattern?
- Различия звучат тривиально, есть ли другие различия в реализация /abstcation?
- Как кто-нибудь может сказать, какая реализация используется после развитие?
- Может ли кто-нибудь дать мне хороший пример шаблона моста и как он может быть изменены во время жизненного цикла программного обеспечения?
Update:
Опять из GoF:
Помните, что адаптер соединяет два существующих интерфейса в отличие от определения совершенно новой.
Означает ли это, что изменение существующего интерфейса для работы с другим интерфейсом - это реализация Adapter?
Update2:
Только что нашел эту невероятную статью: Иллюстрированные шаблоны проектирования GOF на С#
Это истинная структура Bridge Patter:
Мне не хватало того факта, что шаблон Bridge позволяет комбинировать различные абстракции и реализации и расширять их самостоятельно