设计模式之代理模式
来源:互联网 发布:平面设计app软件 编辑:程序博客网 时间:2024/05/23 07:25
代理模式
定义:为其他对象提供一种代理以控制对这个对象的访问。某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
代理模式角色介绍
- Subject:抽象角色,定义公共接口。
- RealSubject:真实角色,定义真实角色所要实现的业务逻辑,供代理角色调用。
- Proxy:代理角色,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作
代理模式结构是一个是真正的你要访问的对象(目标类),一个是代理对象,真正对象与代理。对象实现同一个接口,先访问代理类再访问真正要访问的对象。代理模式在生活的例子也不少,例如跨境代购、游戏代练、演员经纪人等等,这些都有代理的影子。这里以游戏里的代练为例,自己升级觉得非常费力,所以请了代练达到同样的目的。
代码示例
抽象主题类(玩家)
public interface Player { void play(); }
真实主题类(真实玩家)
public class RealPlayer implements Player{ public void play() { System.out.println("打怪升级"); } }
代理类(代理玩家)
public class ProxyPlayer implements Player{ private RealPlayer realPlayer = new RealPlayer(); public void play() { System.out.println("帮真实玩家代练"); realPlayer.play(); } }
客户端
Player proxyPlayer = new ProxyPlayer(); proxy.play();
代理模式中真实角色有可能没能力去与客户端直接操作,而通过代理去转达,比如让人去代购,因为我省了签证的麻烦。代理类就像客户端与真实角色建起的一座桥梁,将客户端要做的事让代理类去转达。就比如Java与C通信,就得有JNI负责转达。代理角色还可以在调用真实角色逻辑前做一些事情,就是常说的面向切片编程。代理模式运用非常广泛,很多著名大项目都有代理模式的存在。
代理模式分为静态代理、动态代理。静态代理是由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。动态代理是在实现阶段不用关心代理类,而在运行阶段才指定哪一个对象。动态代理的作用在这知乎上有讨论,同学们可以移步了解。
https://www.zhihu.com/question/20794107
0 0
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之-代理模式
- 设计模式之 代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之-----代理模式
- 设计模式之代理模式
- 设计模式之-代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 使用Tortoisegit与csdn code管理项目
- ValueAnimator高级使用之一
- c++实验四:百钱百鸡问题
- mysql树节点【所有子节点列表 and 查询所有父节点列表】
- 测试
- 设计模式之代理模式
- Android数据库的学习(一)
- UESToj 64 CD Making ( 水题
- 排序算法(一):插入排序与堆排序
- LinearLayoutCompat源码简单分析
- linux下ftp的配置及使用
- java面试题-设计模式
- 状态机思维
- 【滴滴出行2017春招研发工程师笔试题】俄罗斯套娃