Найти в Дзене
3 подписчика

Вопрос 4. Proxy паттерн. #java #pattern


Proxy. Прокси выполняет роль агента который находится на полпути к целевому объекту и принимает запросы от клиента.

Целевой объект получает и исполняет запросы уже от прокси. Поэтому целевой объект может фокусироваться только на своих задачах, а дополнительный функционал делегирует прокси.

Пример из жизни Вы - Агент по недвижимости - Хозяин квартиры.

Цели прокси:
1. Контроль доступа к целевым объектам
2. Наделение целевого объекта дополнительным функционалом

Proxy создаются через прокси-паттерн, с использованием общего с цлевым объектом интерфейса.

Чтобы создать прокси нужны три шага:
1. Имплементируем прокси от того же интерфейса что и целевой класс.
2. Через конструктор прокси-класса сохраняем целевой класс
3. В методах прокси-класса - выполняем доп логику и вызываем метод целевого класса или наоборот.

Преимущества прокси:
1. Open-closed принцип - целевой класс открыт для расширения, но закрыт для изменений
2. Single responsibility - каждый класс отвечает за свои задачи

Недостатки:
1. возрастает сложность кода
2. дублирование кода - требуется имплементировать интерфейс целиком.

Последнее решается JDK dynamic proxy, но об этом позднее.
Около минуты