In diesem Artikel werden hauptsächlich die relevanten Informationen zum Proxy-Modus beim Lernen von Java-Entwurfsmustern ausführlich vorgestellt. Interessierte Freunde können sich auf
Proxy-Modus (Proxy) beziehen: Stellt einen Proxy für andere Objekte bereit um den Zugriff auf dieses Objekt zu steuern.
Strukturdiagramm des Agenturmodus
Simulationsanforderungen: Xiao Zhang aus Klasse 3 mag Xiao Hong aus Klasse 1, kennt Xiao Hong aber nicht, also er beauftragt Xiao Ming aus der 1. Klasse, ihm das kleine rote Geschenk zu geben.
1: Erstellen Sie eine Schnittstelle, die sowohl Xiao Zhang als auch Xiao Ming implementieren können.
package ProxyModel; /** * 总的接口 * @author 我不是张英俊 * */ interface ISendGift { void GiveDolls(); void GiveFlowers(); void GiveChocolate(); }
2: Erlauben Sie Xiao Zhang, Geschenke zu senden.
package ProxyModel; /** * * 小张是送鲜花的本体,送其实是小张送的,小明只是借助小张的送的鲜花去给小红 * @author 我不是张英俊 * */ public class Pursuit implements ISendGift{ String mm; public Pursuit(String mm){ this.mm=mm; } @Override public void GiveDolls() { // TODO Auto-generated method stub System.out.println("送"+mm+"洋娃娃"); } @Override public void GiveFlowers() { // TODO Auto-generated method stub System.out.println("送"+mm+"鲜花"); } @Override public void GiveChocolate() { // TODO Auto-generated method stub System.out.println("送"+mm+"巧克力"); } }
3: Verwirklichen Sie das von Xiao Ming über Xiao Zhang gesendete Geschenk und übertragen Sie es an Xiao Hong.
package ProxyModel; /** * 小明转送小红礼物的完成方法,其实是借助小张送的礼物来完成的,此处小明即为代理 * @author 我不是张英俊 * */ public class Proxy implements ISendGift{ Pursuit gg; public Proxy(String mm){ gg=new Pursuit(mm); } @Override public void GiveDolls() { // TODO Auto-generated method stub gg.GiveDolls(); } @Override public void GiveFlowers() { // TODO Auto-generated method stub gg.GiveFlowers(); } @Override public void GiveChocolate() { // TODO Auto-generated method stub gg.GiveChocolate(); } }
4: Testklasse:
package ProxyModel; /** * 需求,3班小张喜欢1班小红,但是不认识小红,委托1班小明给小红送东西 * 总结:小张送小红礼物,小张送,然后小明通过小张接过送的礼物,给小红, * 其实小明是借助小张送的礼物,来代理完成送礼物的操作。 * 代理模式 * @author 我不是张英俊 * */ public class test { public static void main(String[] args) { String mm="小红"; Proxy xiaoming=new Proxy(mm); xiaoming.GiveDolls(); xiaoming.GiveFlowers(); xiaoming.GiveChocolate(); } }
5: Konsole
Schicken Sie eine kleine rote Puppe
Senden Sie eine kleine rote Blume
Senden Sie eine kleine rote Schokolade
Zusammenfassung:
Anwendungsszenarien für den Proxy-Modus
1 : Remote-Proxy, d. h. Bereitstellung lokaler Darstellungen eines Objekts in verschiedenen Adressräumen. Dies verbirgt die Tatsache, dass ein Objekt in einem anderen Adressraum existiert.
2: Virtuelle Agenten sind teure Objekte, die nach Bedarf erstellt werden müssen. Verwenden Sie es, um reale Objekte zu speichern, deren Instanziierung lange dauert.
3: Sicherheits-Proxy, der zur Steuerung von Berechtigungen beim Zugriff auf reale Objekte verwendet wird.
4: Intelligente Führung bedeutet, dass der Agent andere Dinge erledigt, wenn das reale Objekt aufgerufen wird.
Vorteile:
1: Der Proxy-Modus kann den Anrufer und den Angerufenen koordinieren, wodurch die Kopplung des Systems bis zu einem gewissen Grad reduziert wird.
2: Das Proxy-Objekt kann be Es fungiert als Vermittler zwischen dem Client und dem Zielobjekt und schützt so das Zielobjekt.
Nachteile:
1: Aufgrund der Hinzufügung eines Proxy-Objekts zwischen dem Client und dem realen Objekt kann es bei einigen Arten von Proxy-Modi zu einer Verlangsamung der Anforderungsverarbeitungsgeschwindigkeit kommen
2: Die Implementierung von Proxy-Mustern erfordert zusätzliche Arbeit und die Implementierung einiger Proxy-Muster ist sehr komplex.
Das obige ist der detaillierte Inhalt vonLernen im Java-Proxy-Modus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!