1.模式动机与定义
代理模式定义:为其他对象提供一种代理以控制对象的访问。
2.模式结构与分析

/** * 定义了RealSubject和Proxy的共同接口,使得在任何使用RealSubject的地方都可以使用Proxy */ public interface Subject { void request(); }/** * 定义了Proxy所代表的真正实体 */ public class RealSubject implements Subject { @Override public void request() { System.out.println("RealSubject invoke request() method"); } }/** * 持有真实实体RealSubject的引用,使得Proxy可以访问真实实体 * 并实现了Subject接口,这样代理就可以代替真实实体 */ public class Proxy implements Subject{ private RealSubject subject; public Proxy() { this.subject = new RealSubject(); } @Override public void request() { this.subject.request(); } }public class Client { public static void main(String[] args) { Subject proxy = new Proxy(); proxy.request(); } }RealSubject invoke request() method3.模式实例与解析
模式实例:
学校里男同学A想要女同学B做自己的女朋友,想送女同学B礼物来追求女同学B,但是自己不好意思直接送,于是委托中间人来帮自己送礼物。
/** * 校园中的漂亮女同学 */ public class SchoolGirl { private String name; public SchoolGirl(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } }GiveGift接口对应于代理模式类图中的Subject。
