Чем отличаются шаблоны Proxy, Decorator, Adapter и Bridge?

377
задан Artur Krajewski 29 August 2018 в 16:44
поделиться

4 ответа

Прокси, Декоратор, Адаптер и Мост являются всеми вариациями на "обертывание" класса. Но их использование отличается.

  • Прокси мог использоваться, когда Вы хотите к ленивому - инстанцируют объекта или скрывают то, что Вы называете удаленный сервис или управляете доступом к объекту.

  • Декоратора также называют "Умным Прокси". Это используется, когда Вы хотите добавить функциональность к объекту, но не путем расширения что тип объекта. Это позволяет Вам делать так во времени выполнения.

  • Адаптер используется, когда у Вас есть абстрактный интерфейс, и Вы хотите отобразить тот интерфейс на другой объект, который имеет подобную функциональную роль, но другой интерфейс.

  • Мост очень похож на Адаптер, но мы называем его Мостом, когда Вы определяете и абстрактный интерфейс и конкретную реализацию. Т.е. Вы не адаптируетесь к некоторому или стороннему коду прежней версии, Вы - разработчик всего кода, но необходимо смочь выгрузить различные реализации.

  • Фасад является более высоким уровнем (чтение: более простой), взаимодействуют через интерфейс к подсистеме одного или нескольких классов. Предположим, что у Вас есть сложное понятие, которое требует нескольких объектов представить. Внесение изменений в тот набор объектов сбивает с толку, потому что Вы не всегда знаете, какой объект имеет метод, который необходимо назвать. Это - время для записи Фасада, который предоставляет высокоуровневые методы для всех сложных операций, которые можно сделать к набору объектов. Пример: Модель предметной области для школьного раздела, с методами как countStudents(), reportAttendance(), assignSubstituteTeacher(), и так далее.

619
ответ дан Bill Karwin 30 August 2018 в 02:44
поделиться

Они весьма схожи, и строки между ними являются довольно серыми. Я предполагаю, что Вы читаете записи Шаблона "декоратор" Шаблона "proxy" и в c2 wiki.

записи и обсуждения там довольно обширны, и они также связываются с другими соответствующими статьями. Между прочим, c2 wiki превосходен при удивлении о нюансах между различными шаблонами.

Для подведения c2 записей я сказал бы, что декоратор добавляет/изменяет поведение, но прокси больше имеет отношение к управлению доступом (ленивое инстанцирование, удаленный доступ, безопасность и т.д.). Но как я сказал, строки между ними являются серыми, и я вижу ссылки на прокси, которые могли легко быть просмотрены как декораторы и наоборот.

7
ответ дан Cristian Ciupitu 30 August 2018 в 02:44
поделиться

Я использую его довольно часто при потреблении веб-сервисов. Шаблон "proxy" должен, вероятно, быть переименован к чему-то более прагматическому, как 'Шаблон Обертки". У меня также есть библиотека, которая является Proxy to MS Excel. Это делает очень легким автоматизировать Excel, не имея необходимость волновать по поводу фоновых деталей такой как, какая версия установлена (если таковые имеются).

1
ответ дан hmcclungiii 30 August 2018 в 02:44
поделиться

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

Мое понимание шаблонов увеличило 100 сгибов после чтения Главные Первые Шаблоны разработки .

, я настоятельно рекомендую его!

29
ответ дан Dinah 30 August 2018 в 02:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: