Слайд 2Что представляет собой паттерн Proxy?
Прокси - паттерн, контролирующий доступ к объектам, предоставляя
![Что представляет собой паттерн Proxy? Прокси - паттерн, контролирующий доступ к объектам,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1034276/slide-1.jpg)
более оптимальное их взаимодействие, перехватывая все вызовы (выполняет функцию контейнера).
Прозрачно замещает объект и управляет доступом к нему. Не изменяет интерфейс или поведение.
Слайд 3Что представляет собой паттерн Proxy?
Упрощает и оптимизирует работу с объектом. Может добавлять
![Что представляет собой паттерн Proxy? Упрощает и оптимизирует работу с объектом. Может](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1034276/slide-2.jpg)
свою функциональность, скрывая ее от клиента.
Содержит объект или ссылку на него, может управлять существованием замещенного объекта.
Слайд 4Главная идея
Не переписывая, не вмешиваясь в код некой цельной системы обеспечить
![Главная идея Не переписывая, не вмешиваясь в код некой цельной системы обеспечить](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1034276/slide-3.jpg)
более оптимальное и экономичное взаимодействие участников этой системы.
Слайд 5Что дает паттерн Proxy
Выявляются узкие места
Выявляются объекты, функционирование которых проходит не совсем
![Что дает паттерн Proxy Выявляются узкие места Выявляются объекты, функционирование которых проходит](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1034276/slide-4.jpg)
оптимально
Вводятся самые объекты заместители , которые, дублируя интерфейс «проблемных» объектов, переадресовывают им вызовы клиента лишь тогда, когда это действительно необходимо, либо после некоторых оптимизационных действий.
В результате, не делая никаких изменений в архитектуре системы, мы получаем немалые возможности по улучшению качества функционирования.
Слайд 6Когда выгодно использование данного паттерна
работа с объектом не должна зависеть от того,
![Когда выгодно использование данного паттерна работа с объектом не должна зависеть от](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1034276/slide-5.jpg)
где он реально расположен
(или) нужно выполнять определенные действия при доступе к объекту;
(или) необходимо оптимизировать взаимодействие объекта с клиентом.
Слайд 7Виды паттерна Proxy:
удаленный заместитель
(Remote proxy)
виртуальный заместитель
(Virtual proxy)
защищающий
![Виды паттерна Proxy: удаленный заместитель (Remote proxy) виртуальный заместитель (Virtual proxy) защищающий](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1034276/slide-6.jpg)
заместитель
(Protection proxy)
"умная" ссылка (Smart reference)
Слайд 8Удаленный заместитель
Предоставление локального доступа к объекту в другом адресном пространстве или
![Удаленный заместитель Предоставление локального доступа к объекту в другом адресном пространстве или](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1034276/slide-7.jpg)
на удалённой машине.
Удаленный заместитель предоставляет локального представителя вместо целевого объекта, находящегося в другом адресном пространстве.
Слайд 9Виртуальный заместитель
Обеспечивает «ленивую инициализацию»: создание реального субъекта только тогда, когда он действительно
![Виртуальный заместитель Обеспечивает «ленивую инициализацию»: создание реального субъекта только тогда, когда он](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1034276/slide-8.jpg)
понадобится. Возможно при этом кешировать часть информации.
Реализация стратегии “копирование-при-записи”.
Слайд 10Защищающий заместитель
Защищающий заместитель контролирует доступ к исходному объекту. Такие заместители полезны, когда
![Защищающий заместитель Защищающий заместитель контролирует доступ к исходному объекту. Такие заместители полезны,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1034276/slide-9.jpg)
для разных объектов определены различные права доступа.
Слайд 11«Умная ссылка»
Это замена обычного указателя. Она позволяет выполнить дополнительные действия при доступе
![«Умная ссылка» Это замена обычного указателя. Она позволяет выполнить дополнительные действия при](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1034276/slide-10.jpg)
к объекту.
Производит подсчет ссылок, автоматическое освобождение памяти и др.
Слайд 12Пример использования Proxy
Interface
IMath
double add (x,y)
………………………
class
Math
double add (x,y)
………………………
class
MathProxy
Math math
Double add (x,y){
return math.add(x,y)
}
………………………
![Пример использования Proxy Interface IMath double add (x,y) ……………………… class Math double](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1034276/slide-11.jpg)
Слайд 13public interface IMath {
public double add(double x, double y);
public double
![public interface IMath { public double add(double x, double y); public double](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1034276/slide-12.jpg)
sub(double x, double y);
public double mul(double x, double y);
public double div(double x, double y); }
/** * "Real Subject" */
public class Math implements IMath {
public double add(double x, double y)
{ return x + y; }
public double sub(double x, double y)
{ return x - y; }
public double mul(double x, double y)
{ return x * y; }
public double div(double x, double y)
{ return x / y; }}
/** * "Proxy Object" */
public class MathProxy implements IMath {
private Math math;
public MathProxy()
{ math = new Math(); }
public double add(double x, double y)
{ return math.add(x, y); }
public double sub(double x, double y)
{ return math.sub(x, y); }
public double mul(double x, double y)
{ return math.mul(x, y); }
public double div(double x, double y)
{ return math.div(x, y); }
}
Слайд 14public class Main {
public static void main(String[] args) {
// Create
![public class Main { public static void main(String[] args) { // Create](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1034276/slide-13.jpg)
math proxy
IMath p = new MathProxy();
// Do the math
System.out.println("4 + 2 = " + p.add(4, 2));
System.out.println("4 - 2 = " + p.sub(4, 2));
System.out.println("4 * 2 = " + p.mul(4, 2));
System.out.println("4 / 2 = " + p.div(4, 2));
}
}
Слайд 15Преимущества и недостатки
Преимущества:
удаленный заместитель;
виртуальный заместитель может выполнять оптимизацию;
защищающий заместитель;
"умная" ссылка;
Недостатки
резкое увеличение времени
![Преимущества и недостатки Преимущества: удаленный заместитель; виртуальный заместитель может выполнять оптимизацию; защищающий](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1034276/slide-14.jpg)
отклика.
Слайд 16Вопросы
Что представляет собой паттерн Proxy?
а) паттерн, который предоставляет необходимые функции, но
![Вопросы Что представляет собой паттерн Proxy? а) паттерн, который предоставляет необходимые функции,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1034276/slide-15.jpg)
не поддерживает нужного интерфейса
б) разделитель объектов на абстракцию и реализацию так, чтобы они могли изменяться независимо друг от друга
в) паттерн, контролирующий доступ к объектам, перехватывая все вызовы.
Назовите виды прокси.