首页 > 代码库 > 代理设计模式
代理设计模式
1、主要解决的问题:
客户端代码和实现代码的解耦合,代理类对实现类打理一切
真正干活的那个类是要对客户端隐藏的
代理类和实现类一般都会实现同一个接口(也可以不这么干)
代理设计模式(Proxy)和状态模式(State)很类似,代理模式是状态模式的一种特例
一个代理模式下的代理类一般只对应一个实现类;而一个状态模式下的代理类一般对应多个实现类
代理模式主要目的是控制对实现类的访问
状态模式主要目的是可以动态改变实现类
2、插图
插图以及UML图(Astah/jude) http://pan.baidu.com/s/1pJylLG3
3、代码实现示例
接口
1 package com.xinye.test.proxy; 2 /** 3 * 4 * @author xinye 5 * 6 */ 7 public interface IProxy { 8 void method1(); 9 void method2();10 void method3();11 }
实现类:
1 package com.xinye.test.proxy; 2 /** 3 * 被代理类 4 * @author xinye 5 * 6 */ 7 public class ProxyImpl implements IProxy { 8 9 @Override10 public void method1() {11 System.out.println(getClass().getSimpleName() + " method1() invoke");12 }13 14 @Override15 public void method2() {16 System.out.println(getClass().getSimpleName() + " method2() invoke");17 }18 19 @Override20 public void method3() {21 System.out.println(getClass().getSimpleName() + " method3() invoke");22 }23 24 }
代理类:
1 package com.xinye.test.proxy; 2 /** 3 * 代理类 4 * @author xinye 5 * 6 */ 7 public class Proxy implements IProxy { 8 // 被代理的对象 9 private IProxy impl;10 11 public Proxy(){12 impl = new ProxyImpl();13 }14 15 @Override16 public void method1() {17 impl.method1();18 }19 20 @Override21 public void method2() {22 impl.method2();23 }24 25 @Override26 public void method3() {27 impl.method3();28 }29 30 }
客户端代码:
1 package com.xinye.test.proxy; 2 /** 3 * 4 * @author xinye 5 * 6 */ 7 public class Client { 8 public static void main(String[] args) { 9 Proxy proxy = new Proxy();10 11 proxy.method1();12 proxy.method2();13 proxy.method3();14 }15 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。