首页 > 代码库 > 设计模式----代理模式(Proxy)
设计模式----代理模式(Proxy)
为另一个对象提供一个替身或占位符以控制对这个对象的访问。
代理模式的组成:
主题接口(Subject):提取真正主题与代理的公共方法,让使用真正主题的地方也能用代理代替。
真正主题(RealSubject):真正处理请求的类。
代理(Proxy):真正主题的代理类,请求方通过调用代理对象间接调用真正主题。
代理模式的简单例子:
(主题接口类)Subject.java
package xu.neng.Proxy; public interface Subject { public void request(); }
(正真主题类)RealSubject.java
package xu.neng.Proxy; public class RealSubject implements Subject{ @Override public void request() { System.out.println("竟敢调用我!!!"); } }
(代理类)Proxy.java
package xu.neng.Proxy; //必须和被代理对象继承统一接口 public class Proxy implements Subject { RealSubject realSubject; public Proxy() { this.realSubject = new RealSubject(); } // 从构造方法中传入被代理的对象 public Proxy(RealSubject realSubject) { this.realSubject = realSubject; } // 调用方法 @Override public void request() { realSubject.request(); } }
(测试类,即Client)Test.java
package xu.neng.Proxy; /** * 测试代理模式。(相当于UML图中的Client) * * @author neng * */ public class Test { public static void main(String[] args) { // 我想调用RealSubject出来玩玩 Proxy proxy = new Proxy(new RealSubject()); proxy.request(); } }
代理模式的应用:
iOS开发中常用。代理模式更像是一种思想,通过中间手段来控制正真对象的访问,同时还可以做一些包装。
防火墙代理:控制网络资源的访问、保护主题免于坏客户的侵害。
智能引用代理:当主题被引用时,可以进行额外的动作。如进行引用计数等。
缓存代理:为开销大的运算结果提供临时存储。允许多个客户共享结果,以减少计算或网络延迟。(本质上还是额外做其他事情)
同步代理:多线程时,为主题提供安全的访问。
写入时复制代理:用来控制(延迟)对象的复制,直到客户真的需要为止。
参考一篇很有意思的文章:http://yangguangfu.iteye.com/blog/815787
转载请注明出处:http://blog.csdn.net/xn4545945
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。