结构型模式7之1-Proxy代理模式例子理解
2016-01-27 15:18
363 查看
所谓代理,就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
抽象对象角色:租房
目标对象角色:租房的人
代理对象角色:帮忙租房的中介
客户端
===================
例子二:
test
结果
抽象对象角色:租房
public abstract class AbstractObject { //抽象操作:操作租房 public abstract void operation(); }
目标对象角色:租房的人
public class RealObject extends AbstractObject { @Override public void operation() { //租房要做的一些操作 System.out.println("一些操作"); } }
代理对象角色:帮忙租房的中介
public class ProxyObject extends AbstractObject{ RealObject realObject = new RealObject(); @Override public void operation() { //调用目标对象之前可以做相关操作 System.out.println("before"); realObject.operation(); //调用目标对象之后可以做相关操作 System.out.println("after"); } }
客户端
public class Client { public static void main(String[] args) { // 代理已经把房租到了,不要个人亲自出马 AbstractObject obj = new ProxyObject(); obj.operation(); } }
===================
例子二:
interface Network{ public void browse(); } class Real implements Network{//真实的上网操作 public void browse(){ System.out.printlf("上网ing"); } } class Proxy implements Network{ Network network; public Proxy(Network network){ this.network=network; } public void check(){ System.out.printlf("检查用户是否合法"); } public void checkTime(){ System.out.printlf("检查时间是否到期"); } public void browseOnline(){ check(); checkTime(); network.browse();//调用真实的方法 } }
test
public class ProxyTest{ public static void main(String args[]){ Network network=new Proxy(new Real()); network.browse(); } }
结果
检查用户是否合法 检查时间是否到期 上网ing
相关文章推荐
- 将指定文件夹下文件及子文件夹下的文件复制到同一级目录
- OpenGL入门——GLFW
- 启动tomcat,解决了Eclipse控制台乱码问题后,在Eclipse调试时,依然有中文乱码问题(解决)
- TCP/IP协议,HTTP/HTTPS协议
- jQuery实现的分子运动小球碰撞效果
- hdu 5546 Ancient Go【dfs】【思维】
- 提升SQLite数据插入效率低、速度慢的方法
- 宜人贷系统架构——高并发下的进化之路(转载)
- Android Timer 定时器 与handler的配合
- GIT:本地有更改,但强制作远程仓库里作更新
- 文件下载中文乱码
- 进程上下文和中断上下文
- 99. Permutations
- [Android Pro] 使用apktool工具遇到could not decode arsc file的解决办法
- Hibernate 映射组成关系
- Android之多线程编程
- 802.11A/B/G/N四种协议
- ListView设置分割线高度和 颜色 ~问题~
- 10. Regular Expression Matching
- 用PowerMock mock final类