5

Как я понял и Адаптер и Прокси шаблоны делают два разных/разных класса/объектов совместимыми с каждым для связи. И оба они Структурные узоры. Я получаю, что они оба очень похожи друг на друга.Какова разница между шаблонами адаптера и прокси?

Может ли кто-нибудь объяснить, что именно делает их разными?

EDIT: Я прошел через this вопрос. Но я бы предпочел бы иметь близкое сравнение между адаптером и прокси.

+2

Возможный дубликат (HTTP: // StackOverflow. com/questions/350404/how-do-the-proxy-decorator-adapter-and-bridge-patterns-different) –

+0

@michael_j_ward Я прошел через это, но мне бы хотелось получить тесное сравнение между ними. 2. Thnx в любом случае , –

ответ

10

адаптер:

  1. Это позволяет два несвязанных интерфейсы для совместной работы через различные объекты, возможно, играет ту же роль.
  2. Он изменяет оригинальный интерфейс.

UML диаграмма:

enter image description here

Вы можете найти более подробную информацию об этой модели с рабочим примером кода в этой должности SE:

Difference between Bridge pattern and Adapter pattern

Proxy:

Прокси предоставляют суррогат или держатель места для другого объекта для контроля доступа к нему.

UML-схема:

enter image description here

Есть общие ситуации, в которых шаблон прокси применим.

  1. виртуальный прокси является держателем места «дорогой для создания» объектов. Реальный объект создается только тогда, когда клиент сначала запрашивает/обращается к объекту.
  2. A удаленный прокси предоставляет локальный представитель для объекта, который находится в другом адресном пространстве. Это то, что обеспечивает код «заглушки» в RPC и CORBA.
  3. A Защитный прокси контролирует доступ к чувствительному главному объекту. Объект «суррогатный» проверяет, что у вызывающего есть разрешения доступа, необходимые до перенаправления запроса.
  4. смарт-прокси обеспечивает сложный доступ к определенным объектам, таких как отслеживание количества ссылок на объект и отказ в доступе, если определенное число будет достигнуто, а также загрузки объекта из базы данных в память по требованию

Для рабочего кода ознакомьтесь со статьей tutorialspoint о прокси.

Основные отличия:

  1. адаптер обеспечивает другой интерфейс к своему предмету. Прокси обеспечивает тот же интерфейс
  2. адаптера предназначается, чтобы изменить интерфейс существующего объекта

Вы можете найти более подробную информацию об этих моделях в sourcemaking статей proxy и adapter статей.

Другие полезные статьи: proxy по DZone

+0

Большое спасибо за ваши усилия по улучшению вашего ответа снова и снова :) –

+0

Я закончил с моими изменениями :) –

2

От here:

адаптер обеспечивает другой интерфейс к своему предмету. Прокси обеспечивает тот же интерфейс.

Вы можете подумать о адаптере как о чем-то, что должно сделать одно подходящим для другого, которое несовместимо, если оно связано напрямую. Например, когда вы выезжаете за границу, вам нужен адаптер электрической розетки.

Теперь прокси - это объект того же интерфейса и, возможно, тот же базовый класс (или подкласс). Он только «притворяется» как бы (и ведет себя как) фактический объект, а вместо этого направляет фактическое поведение (вычисления, обработку, доступ к данным и т. Д.) К базовому ссылочному объекту.

Экстраполируя электрическую аналогию, было бы хорошо, что использование адаптера видимо для клиента, то есть клиент «знает» адаптер используется, в то время как использование прокси-сервера может быть чаще скрытый или «прозрачный» - клиент считает, что используется фактический объект, но это только прокси.

0

разница между шаблон адаптера и Proxy Pattern

ADAPTER PATTERN

  1. индийский мобильный зарядное устройство (КЛИЕНТ) не вписывается в коммутаторе США (СЕРВЕР).
  2. Вам необходимо использовать адаптер, чтобы индийское мобильное зарядное устройство (CLIENT) могло поместиться в щит управления США (SERVER).
  3. Из пункта 2 вы можете понять, что адаптер контактов CLIENT напрямую. Затем сервер контактов адаптера.

PROXY PATTERN

  • В адаптере шаблон клиента непосредственно контакты адаптера. Он не связывается с сервером.
  • В прокси-шаблоне прокси-сервер и сервер реализуют один и тот же интерфейс. Клиент будет вызывать тот же интерфейс.

ПОНИМАНИЕ С ПОМОЩЬЮ КОДА

class client{ 
    public void main(){ 
     //proxy pattern 
     IServer iserver = new proxy(); 
     iserver.invoke(); 

     //adapter pattern 
     IAdapter iadapter = new adapter(); 
     iserver.iadapter(); 
    } 
} 

class server implements IServer{ 
    public void invoke(){} 
} 

class proxy implments IServer{ 
    public void invoke(){} 
} 

class adapter implements IAdapter{ 
    public void invoke(){} 
} 

Ссылка: [? Как Узоры Proxy, Decorator, адаптер и мост отличается] Difference between Adapter pattern and Proxy Pattern

Смежные вопросы