GoF Design patterns мост / адаптер / декоратор


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

1 3

1 ответ:

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

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

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

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