Dieser Artikel beschreibt das Problem der Lösung von Rotweinverteilung basierend auf dem Proxy -Modell von Java. Teilen Sie es für Ihre Referenz wie folgt weiter:
1. Musterdefinition
Im Proxy -Modus nehmen zwei Objekte an der Verarbeitung derselben Anfrage teil. Die empfangene Anfrage wird vom Proxy -Objekt dem realen Objekt zur Verarbeitung übertragen. Das Proxy -Objekt steuert den Zugriff der Anforderung, die eine vermittelnde Brücke zwischen der Client -Anwendung und dem realen Objekt spielt. Der Proxy -Modus verwendet die Objektaggregation anstelle der Vererbung, wodurch die Kopplung zwischen Softwaremodulen effektiv reduziert wird.
2. Modellbeispiele
1 Musteranalyse
Wir leihen uns eine Weinverteilung aus, um dieses Modell zu veranschaulichen.
2 Proxy -Modus Statische Klassendiagramm
3 Code Beispiele
3.1 Schnittstelle für Rotweinfabrik 1 Iredwine
Paket com.demo.real;/** * Rotweinschnittstelle * * @Author * */Public Interface Iredwine {// Methode zur Herstellung von Rotwein Public void Product (); // Methode zum Verkauf von Wine Public void Sell ();}3.2 Realisierung eines realedWineFaktoros in der Rotweinfabrik
Paket com.demo.real.impl; import com.demo.real.iredwine;/** * Real Wine Production Factory * * @Author * */public class RealredWineFactory -Geräte Iredwine {// Methode zur Herstellung von Rotwein @Override Public Void Product () {{out.println ("Red Wine Fabricyes -Produkte produzieren rot produzieren } // Methode zum Verkauf von Wine public void Sell () {System.out.println ("Rotweinfabrik verkauft Rotwein ..."); }}3.3 Erstellen Sie einen Rotweinagenten - Redwineproxy
Paket com.demo.proxy; import com.demo.real.iredwine;/** * Rotweinagent * * @Author * */Public Class RedwineProxy implementiert Iredwine {// Real Rotweinhersteller privater Final Iredwine Redwine; // Agent Erlaubnis zum Verkauf von Rotwein Privat Final Boolean Erlaubnis = True; // Standardkonstruktionsmethode public Redwineproxy (Iredwine Redwine) {this.redwine = redwine; } // Agentenmethode zur Herstellung von Rotwein (der Agent produziert keinen Rotwein und nimmt Wein aus der realen Fabrik zum Verkauf) @Override Public void Product () {// Bestimmen Sie, ob der Agent das Recht hat, ein Rotwein zu sein, wenn (thepermission) {// Der Agent hat das Recht, ein Rechtssystem zu verkaufen. System.out.println ("Der Agent erhält eine Bestellung und benachrichtigt die Fabrik, um zu produzieren ..."); this.redwine.product (); } else {System.out.println ("[Dies ist ein illegaler Rotweinagent!]"); }} // wie man Rotwein für Agent @Override public void sell () {if (this.permission) {this.redwine.sell () verkauft; System.out.println ("Der Agent bekommt einen Großhandel Rotwein aus der Fabrik und verkauft ihn zu einem höheren Preis und verdient einen gewissen Unterschied davon ..."); } else {System.out.println ("[Dies ist ein illegaler Rotweinagent!]"); }}}3.4 Gehen Sie zum Weinagenten, um Rotweinkunden zu kaufen
Paket com.demo; import com.demo.proxy.redwineproxy; import com.demo.real.iredwine; import com.demo.real.impl.realredwineFactory;/** * Hauptanwendung * * @Author * */öffentlicher Klient Instance Iredwine RealredwineFactory = new RealredWineFactory (); // Proxy -Objektinstanz iredwine redwineproxy = new Redwineproxy (realredwineFactory) erhalten; // Agent produziert Rotwein (eigentlich die wirkliche Produktion ist die Fabrik) redwineproxy.product (); // Agent verkauft Rotwein (Großhandelspreis und verkauft ihn dann zu einem höheren Preis, um die Differenz zu verdienen) redwineproxy.sell (); }}
4 Auslaufergebnisse
[Dies ist ein legaler Rotweinagent]
Der Agent erhielt die Bestellung und benachrichtigte die Fabrik, um ...
Rotweinfabrik produziert Rotwein ...
Rotweinfabrik verkauft Rotwein ...
Der Agent bekommt den Großhandel Rotwein aus der Fabrik und verkauft ihn zu einem höheren Preis. Damit verdient ein bestimmter Preisunterschied ...
III. Die Designprinzipien dieses Musters
1 Verzögerung der Belastung, um die Systemeffizienz zu verbessern
2 Prinzip der Einzelverantwortung
4. Verwenden Sie Anlässe
1 Remote -Proxy: Bietet einen lokalen Proxy für ein Objekt in verschiedenen Adressräumen.
2 Virtual Agent: Wenn die Erstellung eines Objekts zeitaufwändig ist, können Sie es über das Proxy-Objekt aufrufen. Bevor das reale Objekt erstellt wird, wird ein falscher Anruf zurückgegeben. Wenn das reale Objekt erstellt wird, wird der entsprechende Methodenaufruf des realen Objekts an den Client zurückgegeben.
3 Protection Agent kontrolliert den Zugriff auf das ursprüngliche Objekt.
4 Smart -Richtlinien ersetzen einfache Zeiger, die beim Zugriff auf Objekte einige zusätzliche Vorgänge ausführen.
V. Statische Klassendiagramm des Proxy -Modus
Abstrakte Rolle: Eine gemeinsame Schnittstelle, die reale Objekte und Proxy -Objekte deklariert.
Wirkliche Rolle: Das Zielobjekt, das die Anfrage wirklich umgeht.
Agentenrolle: Die Rolle des Proxy -Objekts enthält Verweise auf reale Objekte, sodass das Proxy -Objekt die Anforderung in reale Objekte zur Verarbeitung umwandeln kann. Gleichzeitig kann das Proxy -Objekt auch vor und nach der Durchführung des realen Objektbetriebs zusätzliche Vorgänge hinzufügen.
Für mehr Java-bezogene Inhalte können Leser, die an dieser Website interessiert sind, die Themen anzeigen: "Java-Datenstruktur und Algorithmus-Tutorial", "Zusammenfassung der Java-Operation DOM-Knoten-Tipps", "Zusammenfassung der Java-Datei- und Verzeichnisoperationstipps" und "Zusammenfassung von Java Cache Operation Tipps" "
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.