按:本文为ATIP团内部培训笔记,主讲人:winters1224,记录人:yp_811,转载请注明出处;

一、代理模式的概念:

代理模式:为其他对象提供一种代理以控制对这个对象的访问。

用一个代理类,控制对真实的实现类的访问。

二、代理模式的作用:

1、访问控制

2、延迟初始化

三、代理模式控制访问的方式:

1、远程代理控制访问远程对象

2、虚拟代理控制访问创建开销大的资源

3、保护代理基于权限控制对资源的访问

四、代理模式的实现

1.类图

通过代理类proxy,控制对impl的访问、初始化等操作

代理和实现类都实现同样的接口

2、时序图

步骤2用来做访问控制或者初始化
步骤3是无权限时的返回;步骤7是正常操作的返回。
步骤6时后处理。

3、代码实现

接口定义

public interface Server{public String service();
}

实现类

class ImplServer implements Server{@overridepublic String service(){return "Impl";}
}

代理类

public class ProxyServer implements Server{private Server impl;@overridepublic String service(){boolean allowAccess = preprocess();if(allowAccess){return impl.service();}else{return "denied";}}
}

客户端

public Class Client{public static void main(String[] arg){Server server=new ProxyServer();String serverResult=server.service();}
}

五、注意点:

1、访问控制:访问被阻止时的返回值处理。

2、资源控制:访问结束后释放资源的处理。

六、模式协作:

1、配合工厂模式

2、配合单例模式

3、配合亨元模式(池化实例)

4、配合策略模式

5、与装饰者模式的异同

相同点:都实现同一个接口;都很好的利用了“组合”;类图完全一样。

不同点:时序图上略有差异;目的也不一样。

七、项目应用:

1、ShiroFilter

2、数据库连接池

3、缓存

八、代理模式总结:

1、用代理类控制对实现类的访问

2、访问控制;资源控制
3、实现方法:类图、时序图

4、与其它模式协作:工厂模式,亨元模式,单例模式等
5、项目应用:基础框架部分

九、交流问题

动态代理和静态代理的区别

静态代理在代码中已经确定了具体的实现类;

动态代理只有在执行过程中才能确定要用哪个实现类。

本文出自 “ATIP團戰術策劃部” 博客,请务必保留此出处http://atip3.blog.51cto.com/6312771/1335409

转载于:https://blog.51cto.com/winters1224/1335698

团部培训笔记-设计模式-《2013-11-27 代理模式》相关推荐

  1. 设计模式(11)代理模式The Proxy Pattern - 1 - 远程代理rmi

    代理模式 假设现在需要设置一个监视器Monitor,能够监视糖贩卖机GumballMachine的状态,位置信息.还有多少糖果等.一个简单的想法就是创建一个Monitor的类,构造参数包括Gumbal ...

  2. 设计模式(四)--代理模式

    设计模式(四)–代理模式 文章目录 设计模式(四)--代理模式 其他链接 代理模式 1.简介 2.静态代理 角色 代码实现 好处 3.动态代理 代码实现 解析 其他链接 JVM学习笔记(一) JVM学 ...

  3. Java设计模式(10)代理模式(Proxy模式)

    理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣. Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,P ...

  4. 《拉勾Java高薪课程》阶段一输出 之 通过房屋租赁流程理解设计模式(单例模式,代理模式,工厂模式)--菜鸟小回

    通过房屋租赁流程理解设计模式(单例模式,代理模式,工厂模式) 文章目录 通过房屋租赁流程理解设计模式(单例模式,代理模式,工厂模式) @[toc] 一.单例模式 1. 相关概念 2. 演示思路 3. ...

  5. 【设计模式与体系结构】代理模式

    [设计模式与体系结构]代理模式 文章目录 [设计模式与体系结构]代理模式 一.实例分析 二.代码实现 三.实现结果 一.实例分析 (1) 代理模式设计一个房产中介的模拟程序. 要求:房产中介有介绍和代 ...

  6. 设计模式学习之1—代理模式

    设计模式学习之1-代理模式 0.?先看这里 --- 诗雨的学习说明 1.从生活中初识代理 2.代理模式的类图和角色 3.静态代理和动态代理 4.静态代理 和 动态代理 的 使用模板 4.1 静态代理使 ...

  7. Head First设计模式读书笔记十 第十一章 代理模式

    之前的总结链接 https://blog.csdn.net/u011109881/article/details/59191308 代理模式本身的框架结构并不难理解,但是在实际应用中,我们往往被实际应 ...

  8. 设计模式C++学习笔记之二(Proxy代理模式)

    代理,一看名字就知道这只是个中介而已,真实的执行者在代理的后面呢.cbf4life在他的书里提的例子也很有趣,更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com.现在贴代码 ...

  9. C#设计模式之十二代理模式(Proxy Pattern)【结构型】

    一.引言 今天我们要讲[结构型]设计模式的第七个模式,也是"结构型"设计模式中的最后一个模式,该模式是[代理模式],英文名称是:Proxy Pattern.还是老套路,先从名字上来 ...

最新文章

  1. springboot +security +mybatis+thymeleaf 实现简单的用户 角色 权限(资源) 管理
  2. 力邀安卓为鸿蒙效力,期末阅读题答题秘籍2
  3. 仓位 001 998 AUFNAHME不存在(L9009)
  4. id nfc模拟_手机NFC也可以刷ID卡门禁?无聊测试居然成功了
  5. 清华大学《操作系统》(九):进程和线程
  6. ls/vi等 command not found
  7. 学习 Python 第八天
  8. 周鸿祎的“流氓”可否借鉴?
  9. from collections import OrderedDict
  10. 超详细的Redis入门教程
  11. WIN10系统 screencap截图屏幕会自动放大怎么办
  12. 【公众号】微信进入公众号链接自动获取授权登陆
  13. 空间坐标系对应EPSG编号
  14. el-table中的表格的相同项合并(单元格合并),包含多层合并
  15. 查看pcie总线上的设备ID以及带宽计算
  16. OPPO、一加将在德国禁售?原来是被“专利流氓”诺基亚盯上了!
  17. 如何使用搜索技巧来成为一名高效的程序员(很好的总结)
  18. Android实现自定义字体
  19. MATLAB 二维数组的行列操作
  20. 计算机基础知识做网页,专业知识—计算机基础知识之网页制作 .doc

热门文章

  1. MySQL无法启动 服务没有报告任何错误
  2. 接口测试--apipost如何解决接口重定向
  3. 11月份写什么,由你来决定——学堂需求调查
  4. sql查询每科成绩的最高分_数据分析SQL查询:一文带你入门到掌握
  5. Web前端初学者,需用了解的7大HTML知识点
  6. 你应该需要知道的前端小技巧
  7. 前端有未来吗?听我娓娓道来!
  8. 精通HTML5+CSS3需要学什么?
  9. 系统快捷方式java_java中这么创建界面快捷方式图标 代码
  10. 传感器工作原理_荧光氧气传感器工作原理简介