1.含义
代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
2.类图
3.代码
/* * 抽象主题角色 */ public abstract class Subject { abstract public void request(); } /* * 真实主题角色 */ public class RealSubject extends Subject { public RealSubject() { } public void request() { System.out.println("From real subject."); } } /* * 代理主题角色 */ public class ProxySubject extends Subject { private RealSubject rs; public ProxySubject() { } public void request() { preRequest(); if (rs == null) { rs = new RealSubject(); } rs.request(); postRequest(); } private void preRequest() { } private void postRequest() { } } /* * 测试类 */ public class Test { public static void main(String[] args) { Subject s = new ProxySubject(); s.request(); } }
4.和装饰模式的区别
装饰模式:增强原接口的方法。
代理模式:增强对原接口的控制,经常在原接口方法之前,之后执行其它方法。
z