经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » 设计模式 » 查看文章
代理模式
来源:cnblogs  作者:songlingjie  时间:2019/9/10 11:26:46  对本文有异议

前言

小龙同学花费毕生绝学精心学习并制作了自动化测试之selenium ,但预定分享时间时,小龙龙同学胆怯了,于是大哥小强出马,帮他完成预定分享时间的工作

代理模式

为其他对象(小龙)提供一个代理(小强)以控制对这个对象的访问. 类图如下:

类图

优点:

  1. 职责清晰。
  2. 高扩展性。
  3. 智能化。

缺点:

  1. 由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。
  2. 实现代理模式需要额外的工作,有些代理模式的实现非常复杂。

使用场景:按职责来划分,通常有以下使用场景:

  1. 远程代理。
  2. 虚拟代理。
  3. Copy-on-Write 代理。
  4. 保护(Protect or Access)代理。
  5. Cache代理。
  6. 防火墙(Firewall)代理。
  7. 同步化(Synchronization)代理。
  8. 智能引用(Smart Reference)代理。

预定分享时间的职能

  1. package com.jack.idea.test.designmode;
  2. /**
  3. * 代理模式
  4. *
  5. * @author ljs.song
  6. * @date 2017-12-28 18:50
  7. */
  8. public class Proxy {
  9. public static void main(String[] args) {
  10. ////接下来小强代理小龙去跟磊磊等抢分享时间
  11. Xiaoqiang xiaoqiang = new Xiaoqiang(new Xiaolong());
  12. //磊磊说4点他要分享
  13. xiaoqiang.reserveTime(4);
  14. System.out.println("----------------");
  15. //磊磊被上述大哥打败,改成说他要5点分享
  16. xiaoqiang.reserveTime(5);
  17. }
  18. }
  19. //分享者
  20. interface Sharer{
  21. /**
  22. * 预定时间 大家都来报出一些时间抢
  23. */
  24. void reserveTime(int time);
  25. }
  26. /**
  27. * 小龙内心知道自己想周四分享,但是怕有别人抢时间,不敢开口
  28. */
  29. class Xiaolong implements Sharer{
  30. @Override
  31. public void reserveTime(int time) {
  32. System.out.println( "我想周四 "+time+" 点开始分享");
  33. }
  34. }
  35. /**
  36. * 老大哥小强出马帮其抵挡一切入侵者
  37. */
  38. class Xiaoqiang implements Sharer{
  39. private Sharer sharer;
  40. public Xiaoqiang(Sharer sharer) {
  41. this.sharer = sharer;
  42. }
  43. @Override
  44. public void reserveTime(int time) {
  45. //这里表示这个代理能帮他全权做出一些反馈,不仅仅是调用被代理者的职能
  46. if(time == 4){
  47. System.out.println("我不管,只能小龙在这个点分享");
  48. }else{
  49. this.sharer.reserveTime(time);
  50. }
  51. }
  52. }

转载请注明出处 https://blog.csdn.net/abudexiatian

原文链接:http://www.cnblogs.com/jackslj/p/11496039.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号