GoF Design шаблоны Мост / Адаптер / Декоратор - PullRequest
3 голосов
/ 08 декабря 2011

Я читаю шаблоны проектирования, и есть вопрос, на который я не могу ответить сам. Являются ли Adapter, Bridge и Decorator структурно различными, или они закодированы одинаково, но применяются с другой семантикой?

1 Ответ

10 голосов
/ 08 декабря 2011

Конструктивно шаблоны очень похожи.Большая разница заключается в намерении шаблона, а не в способе его построения.

Шаблон adapter используется для адаптации класса с одним интерфейсомк тому из другого интерфейса.Как правило, адаптируемый вами класс - это устаревший код или библиотека, к которой вы не можете получить доступ (или, по крайней мере, не можете изменить).Одно из основных отличий адаптера состоит в том, что интерфейс, который вы настраиваете и который вы предоставляете обратно, отличается .

Шаблон bridge очень похож на адаптер,тем, что он может соединить класс с одним интерфейсом с классом другого интерфейса.Однако ключевое различие составляет намерение .С помощью шаблона моста класс был явно разработан для такой работы.Разработчик по-прежнему будет иметь доступ к классу, которому делегированы, но разработчик намеренно решил создать его таким образом.

Шаблон decorator вернет тот же интерфейс класса, которыйукрашается.Он используется для расширения поведения существующего класса, а не для изменения его интерфейса.

...