设计模式目录:html
设计模式 1 ——观察者模式java
设计模式 2 —— 装饰者模式 设计模式
设计模式 5 —— 工厂模式post
设计模式 9 —— 模板方法模式.net
代理模式为另外一个对象提供一个替身或占位符以控制这个对象的访问。
使用代理模式建立表明,让表明对象控制某些对象的访问,被代理的对象能够是远程的对象、建立开销大的对象或者须要安全控制的对象。
几种代理控制访问的方式:
远程代理
抽象对象角色
package cn.telling.rmi; /** * * @ClassName: AbstractObject * TODO * @author xingle * @date 2015-9-29 上午10:48:42 */ public abstract class AbstractObject { //操做 public abstract void operation(); }
目标对象角色
package cn.telling.rmi; /** * * @ClassName: RealObject TODO * @author xingle * @date 2015-9-29 上午10:52:49 */ public class RealObject extends AbstractObject { /** * * @Description: TODO * @author xingle * @data 2015-9-29 上午10:53:05 */ @Override public void operation() { // 一些操做 System.out.println("一些操做"); } }
代理对象角色
package cn.telling.rmi; /** * * @ClassName: ProxyObject * TODO * @author xingle * @date 2015-9-29 上午10:54:31 */ public class ProxyObject extends AbstractObject{ RealObject realObject = new RealObject(); /** * * @Description: TODO * @author xingle * @data 2015-9-29 上午10:54:43 */ @Override public void operation() { System.out.println("调用目标对象 before 操做"); realObject.operation(); System.out.println("调用目标对象 after 操做"); } }
客户端
package cn.telling.rmi; /** * * @ClassName: Client * TODO * @author xingle * @date 2015-9-29 上午10:57:54 */ public class Client { public static void main(String[] args){ AbstractObject obj = new ProxyObject(); obj.operation(); } }
执行结果: