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

代理模式(Proxy)就是给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用。代理模式和装饰模式非常类似,但最主要的区别是代理模式中,代理类对被代理的对象有控制权,决定其执行或者不执行。本文根据https://www.cnblogs.com/gonjan-blog/p/6685611.html给出的结构图,使用Matlab语言实现代理代理模式。

Subject.m

  1. classdef Subject
  2. methods(Abstract)
  3. request(~);
  4. end
  5. end

RealSubject.m

  1. classdef RealSubject < Subject
  2. methods
  3. function request(obj)
  4. mc = metaclass(obj);
  5. disp(mc.Name + ":request");
  6. end
  7. end
  8. end

Proxy.m

  1. classdef Proxy < Subject
  2. properties
  3. sub
  4. end
  5. methods
  6. function obj = Proxy(sub)
  7. obj.sub = sub;
  8. end
  9. function request(obj)
  10. if(randi([0,1]))
  11. obj.before();
  12. obj.sub.request();
  13. obj.after();
  14. else
  15. mc = metaclass(obj);
  16. disp(mc.Name + ":no request");
  17. end
  18. end
  19. function before(obj)
  20. mc = metaclass(obj);
  21. disp(mc.Name + ":start request");
  22. end
  23. function after(obj)
  24. mc = metaclass(obj);
  25. disp(mc.Name + ":end request");
  26. end
  27. end
  28. end

test.m

  1. a = RealSubject();
  2. a.request();
  3. b = Proxy(a);
  4. b.request();

原文链接:http://www.cnblogs.com/usaddew/p/10939448.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号