我对代理模式的理解
来源:互联网 发布:天刀男捏脸数据公子羽 编辑:程序博客网 时间:2024/06/06 01:36
我在学校迎新晚会上见到一个跳舞的女生,第一眼就想把她占为己有,可是我与她素不相识,只能找其他同学偷偷要来她的联系方式。这就是代理模式
概念
我们来看一下head first设计模式里是怎么定义代理模式的:代理模式为另一个对象提供一个替身或占位符以控制这个对象的访问。使用代理模式创建代表对象,让代表对象控制某对象的访问,被代理的对象可以是远程的对象、创建开销大的对象或需要安全控制的对象。
如何实现
拿我追女生的例子来说,我就是委托对象,那个认识她的同学就是代理,我让他去帮我要电话,本质上是我在要电话,最后的结果也是我要到了电话,而事实上却是他找她要的电话。对于代理模式的调用者来说,是我在要电话而并不关注要电话的那个代理,这里大家肯定觉得很熟悉,没错,我们采用了面向接口编程的思想,调用者只需要使用接口中的方法,不用在乎具体的实现类。
因此,我们可以先创建一个委托接口,接口中有一个要电话的抽象方法。然后写一个‘我’对象继承自这个接口,实现要电话的方法;再写一个代理类同样实现这个委托接口,在这个代理类中注入‘我’的实例,调用‘我’中的方法去实现接口方法。总结为一张图:
代码实现
定义委托接口
public interface Subject{ void getCall();}
定义‘我’
public class Me implements Subject{ @Override public void getCall() { // TODO Auto-generated method stub System.out.println("我想要你的电话"); }}
定义代理
public class Proxy implements Subject{ private Subject subject; public Proxy(Subject subject) { // TODO Auto-generated constructor stub this.subject = subject; } @Override public void getCall() { // TODO Auto-generated method stub subject.getCall(); }}
测试
public class ProxyTest { public static void main(String[] args) { Me me = new Me(); Subject proxy = new Proxy(me); proxy.getCall(); }}
输出结果:
阅读全文
0 0
- 我对代理模式的理解
- 对代理模式的理解
- 设计模式,我理解的代理模式
- 自己对代理模式的一点理解
- 对Java代理模式的理解
- 我所理解的代理模式
- 我对正向代理和反向代理的理解
- 对代理模式与Java动态代理类的理解
- 对代理模式与Java动态代理类的理解
- 对代理模式和动态代理的理解
- 对代理模式与Java动态代理类的理解
- 对代理模式与Java动态代理类的理解
- 对代理模式与Java动态代理类的理解
- 对代理模式与Java动态代理类的理解
- 对代理模式与Java动态代理类的理解
- 对代理模式与Java动态代理类的理解
- 对代理模式与Java动态代理类的理解
- 对代理模式与Java动态代理类的理解
- 解决keil打开工程无响应
- Lua学习笔记10-元表与元方法
- redis 集群部署教程
- CentOS6.5安装rabbitMQ-3.6.1
- 关于中断优先级以及中断是否可以没完成时再次进入
- 我对代理模式的理解
- stm32f031G6U6单片机SWD烧写一次后,无法再次烧写解决方法。
- javascript执行上下文、作用域与闭包(第三篇)---自由变量与作用域链
- OpenStack学习笔记
- app集成新浪微博第三方分享报错{"error":"userinfo error","pos":"5"}
- hadoop入门三(基础知识入门)
- C语言——比较字符串的大小及字符串的合并
- 51Nod——1003 阶乘后面0的数量
- 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定