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