Latest web development tutorials

tryb Proxy

W trybie proxy (proxy wzorzec), klasa funkcji na rzecz innej klasy. Tego rodzaju wzorców projektowych należą do modelu strukturalnego.

W trybie proxy, tworzymy obiekt z istniejącego obiektu w celu zapewnienia funkcjonalny interfejs do świata zewnętrznego.

wprowadzenie

Intencja: aby zapewnić środek do kontrolowania dostępu do tego obiektu do innych obiektów.

Główne Rozdzielczość: bezpośredni dostęp do obiektu spowodowało problemy, takie jak: przedmiot, który chcesz przejść na zdalnej maszynie.W systemach obiektowych, niektóre obiekty z jakiegoś powodu (takie jak tworzenie obiektów jest kosztowne, a niektóre działania wymagają kontroli bezpieczeństwa lub dostępu poza procesem), to daje użytkownikom bezpośredni dostęp do konfiguracji systemu lub kłopoty, możemy dodać warstwę dostępu do tego obiektu w czasie dostępu do tego obiektu.

Kiedy stosować: gdy chcesz coś zrobić, aby kontrolować dostęp do klasy.

Jak naprawić: dodanie warstwy pośredniej.

Kod klawisza: Związek z kombinacji klasy proxy.

Przykłady zastosowań: 1, Windows skróty do środka.2, świnia poszedł do wysokiej Cuilan zmianę wyniku Monkey, można rozumieć: wysoka Cuilan wygląd wydobywane wysokiej Morski Niebieski I i Monkey implementuje ten interfejs, świnia dostępu wysoką Cuilan gdy ma tu Król Małp, tak że Monkey King to wysokiej Cuilan klasy proxy. 3, nie koniecznie kupić bilety na pociąg na stacji kupić, można również przejść do gniazd. 4, czek lub zaświadczenie banku depozytu jest proxy fundusze konta. Sprawdź transakcji na rynku jest używany zamiast gotówki, a także zapewnia kontrolę konta Kapitałowej Emitenta. 5, wiosna AOP.

Zalety: 1, jasno określone obowiązki.2, wysoka skalowalność. 3, inteligentny.

Wady: 1, jak również między klientem a rzeczywistym tematem tego obiektu proxy, więc pewnego rodzaju trybie proxy może skutkować wolniejszym żądanie prędkości przetwarzania.2, w celu uzyskania trybu proxy wymaga dodatkowej pracy, aby osiągnąć jakiś tryb proxy jest bardzo skomplikowana.

Scenariusze wykorzystania: według podziału obowiązków, zazwyczaj mają następujące scenariusze użycia: 1, Remote Agent.2. Wpisy. 3, kopiowanie przy zapisie środki. 4, ochrona (Protect lub Access) agentem. 5, pełnomocnik Cache. 6, zapora sieciowa (firewall) agentem. 7, synchronizacji (synchronizacja) agentem. 8, inteligentne odniesienia (Smart referencyjny) agentem.

Uwaga: Różnica między 1 i adapter trybach: wzór Adapter większych zmian rozważane interfejs obiektu, a tryb proxy nie może być zmieniona przez agentów interfejsu klasy.Różnica między 2 i dekorator wzorów: Dekorator W celu zwiększenia funkcjonalności i tryb proxy ma być kontrolowany.

realizacja

Stworzymy interfejsobrazuoraz realizację podmiot klas interfejsuobrazu.ProxyImage jest klasa proxy, zmniejszając zużycie pamięciRealImagezaładowane przedmiotami.

ProxyPatternDemo pokazujemyużycie klasyProxyImageuzyskaćobiekt obrazma być ładowane i wyświetlane na żądanie.

Proxy wzór diagram UML

Etap 1

Tworzenie interfejsu.

Image.java

Obraz {public interface
   void display ();
}

Etap 2

Tworzenie klasy podmiotu, który implementuje interfejs.

RealImage.java

public class RealImage realizuje obraz {

   private String filename;

   RealImage publicznych (string nazwa_pliku) {
      this.fileName = nazwa pliku;
      loadFromDisk (filename);
   }

   @Override
   public void display () {
      System.out.println ( "Wyświetlanie" + filename);
   }

   private void loadFromDisk (string nazwa_pliku) {
      System.out.println ( "Ładowanie" + filename);
   }
}

ProxyImage.java

public class ProxyImage realizuje obraz {

   prywatne RealImage realImage;
   private String filename;

   ProxyImage publicznych (string nazwa_pliku) {
      this.fileName = nazwa pliku;
   }

   @Override
   public void display () {
      if (realImage == null) {
         realImage = new RealImage (filename);
      }
      realImage.display ();
   }
}

etap 3,

Na żądanie, należyProxyImagedostaćRealImageklasy obiekt.

ProxyPatternDemo.java

{public class ProxyPatternDemo
	
   public static void main (String [] args) {
      image image = new ProxyImage ( "test_10mb.jpg");

      // Załaduj obraz z image.display dysku (); 
      System.out.println ( "");
      // Obrazy nie mogą być ładowane z image.display dysku (); 	
   }
}

Etap 4

Sprawdź, czy wyjście.

Ładowanie test_10mb.jpg
Wyświetlanie test_10mb.jpg

Wyświetlanie test_10mb.jpg