Die Rolle des Proxy-Modus besteht darin, einen Proxy für andere Objekte bereitzustellen, um den Zugriff auf dieses Objekt zu steuern.
In manchen Fällen möchte oder kann ein Client nicht direkt auf ein anderes Objekt verweisen, und ein Proxy-Objekt kann als Vermittler zwischen dem Client und dem Zielobjekt fungieren.
Abstrakte Rolle : Deklariert die gemeinsame Schnittstelle zwischen realen Objekten und Proxy-Objekten.
Proxy-Rolle: Die Proxy-Objektrolle enthält intern einen Verweis auf das reale Objekt, sodass das reale Objekt manipuliert werden kann. Gleichzeitig stellt das Proxy-Objekt dieselbe Schnittstelle bereit wie das reale Objekt, sodass es das reale Objekt jederzeit ersetzen kann. Gleichzeitig kann das Proxy-Objekt andere Operationen hinzufügen, wenn es Operationen am realen Objekt ausführt, was einer Kapselung des realen Objekts entspricht.
Echte Rolle: Das reale Objekt, das durch die Proxy-Rolle dargestellt wird, ist das Objekt, auf das wir letztendlich verweisen möchten.
Abbildung: Das folgende Programm verwendet einen statischen Proxy, um eine Funktion zur Konvertierung von Großbuchstaben zu implementieren.
Schnittstellenklasse ISomeService:
package com.ietree.basicskill.designpattern.staticproxy;/** * 接口类 * * @author Root */public interface ISomeService { String doFirst(); void doSecond(); }
Implementierungsklasse SomeServiceImpl:
package com.ietree.basicskill.designpattern.staticproxy;/** * 实现类 * * @author Root */public class SomeServiceImpl implements ISomeService { @Overridepublic String doFirst() { System.out.println("执行doFirst()..."); String result = "abcde";return result; } @Overridepublic void doSecond() { System.out.println("执行doSecond()..."); } }
Proxy-Klasse SomeServiceProxy:
SomeServiceProxy =
Testklasse Haupt:
package com.ietree.basicskill.designpattern.staticproxy;public class Main {public static void main(String[] args) { ISomeService service = new SomeServiceProxy();String result = service.doFirst(); System.out.println(result); service.doSecond(); } }
Aber im tatsächlichen Gebrauch muss eine reale Rolle einer Proxy-Rolle entsprechen, aber wenn sie in großen Mengen verwendet wird, führt dies zusätzlich zu einer starken Erweiterung der Klasse, wenn die reale Rolle nicht bekannt ist Vorab, wie verwende ich den Proxy? Dieses Problem kann durch
Javas dynamische Proxy-Klasse gelöst werden.
Das obige ist der detaillierte Inhalt vonDie Rolle des Proxy-Musters in Entwurfsmustern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!