Latest web development tutorials

режим прокси

В режиме прокси (Proxy Pattern), класс функций от имени другого класса. Этот тип шаблонов проектирования принадлежат к структурной модели.

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

введение

Цель: предоставление средства для контроля доступа к этому объекту к другим объектам.

Основное разрешение: прямой доступ к объекту вызывает проблемы, такие как: объект , который вы хотите получить доступ на удаленной машине.В объектно-ориентированных систем, некоторые объекты по каким-либо причинам (например, создание объекта является дорогостоящим, или некоторые действия требуют контроля безопасности или доступа вне процесса), это даст пользователям прямой доступ к конфигурации системы или много неприятностей, мы можем добавить слой, чтобы получить доступ к этому объекту в момент доступа к этому объекту.

Когда использовать: когда вы хотите сделать что - то для управления доступом к классу.

Как исправить: добавить промежуточный слой.

Код ключа: связь с комбинациями прокси - класса.

Примеры применения: 1, Windows ярлыки внутри.2, свинья пошла к высокому Cuilan изменения результата мартышки, можно понять: высокая Cuilan внешний вид абстрагируется, высокий Turquoise Blue I и обезьяны реализует этот интерфейс, свинья доступа высокой Cuilan, когда не видят Король обезьян, так что Король обезьян является высокая Cuilan прокси-класс. 3, не обязательно, чтобы купить билеты на поезд на станции, чтобы купить, вы можете также пойти в торговых точках. 4, чек или банковский депозитный сертификат является доверенным лицом счета средств. Проверить операции на рынке используется вместо наличных денег, а также обеспечивает контроль счета операций с капиталом эмитента. 5, весна АОП.

Преимущества: 1, четкие обязанности.2, высокая масштабируемость. 3, умный.

Недостатки: 1, так как между клиентом и реальной темой этого прокси - объекта, так что некоторые типа прокси - режима может привести к замедлению скорости обработки запроса.2, для достижения режима прокси требует дополнительной работы для достижения некоторых прокси-режим является очень сложным.

Сценарии использования: в соответствии разделить обязанности, как правило , имеют следующие сценарии использования: 1, Remote Agent.2. Оповещения. 3, копирование при записи агентов. 4, защита (защита или доступ) агента. 5, Cache Agent. 6, межсетевой экран (брандмауэр) агент. 7, синхронизация (синхронизация) агент. 8, интеллектуальные ссылки (Smart Reference) агент.

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

реализация

Мы создадим интерфейсизображенияи реализацию классов сущностей интерфейсаизображения.ProxyImage является прокси - класс, уменьшая объем памятиRealImageзагруженных объектов.

ProxyPatternDemo,мы продемонстрировать использование классаProxyImage, чтобы получитьизображениеобъекта , который будет загружен и отображаться по требованию.

Прокси-модели UML диаграмма

Шаг 1

Создайте интерфейс.

Image.java

открытый интерфейс изображения {
   недействительным дисплей ();
}

Шаг 2

Создать класс сущностей, который реализует интерфейс.

RealImage.java

Открытый класс RealImage реализует изображение {

   частная строка имя_файла;

   общественного RealImage (String Filename) {
      this.fileName = имя_файла;
      loadFromDisk (Filename);
   }

   @Override
   общественного недействительными дисплей () {
      System.out.println ( "Отображение" + Filename);
   }

   частная пустота loadFromDisk (String Filename) {
      System.out.println ( "Загрузка" + Filename);
   }
}

ProxyImage.java

Открытый класс ProxyImage реализует изображение {

   частный RealImage realImage;
   частная строка имя_файла;

   общественного ProxyImage (String Filename) {
      this.fileName = имя_файла;
   }

   @Override
   общественного недействительными дисплей () {
      если (realImage == NULL) {
         realImage = новый RealImage (Filename);
      }
      realImage.display ();
   }
}

Шаг 3

При запросе, используйтеProxyImage, чтобы получитьRealImageобъект класса.

ProxyPatternDemo.java

Открытый класс ProxyPatternDemo {
	
   государственной статической силы основных (String []) {агдз
      Изображение = новый ProxyImage ( "test_10mb.jpg");

      // Загрузка изображения с диска image.display (); 
      System.out.println ( "");
      // Изображения не могут быть загружены с диска image.display (); 	
   }
}

Шаг 4

Проверьте выход.

Загрузка test_10mb.jpg
Отображение test_10mb.jpg

Отображение test_10mb.jpg