博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式——8代理模式(Proxy)
阅读量:5891 次
发布时间:2019-06-19

本文共 1125 字,大约阅读时间需要 3 分钟。

8、代理模式(Proxy)

其实每个模式名称就表明了该模式的作用,代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。再如我们有的时候打官司,我们需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们的想法。

根据上文的阐述,代理模式就比较容易的理解了,我们看下代码:

[java] view plaincopy

  1. public interface Sourceable {
  2. public void method();
  3. }
    [java] view plaincopy
  4. public class Source implements Sourceable {
  5. @Override
  6. public void method() {
  7. System.out.println("the original method!");
  8. }
  9. }
    [java] view plaincopy
  10. public class Proxy implements Sourceable {
  11. private Source source;
  12. public Proxy(){
  13. super();
  14. this.source = new Source();
  15. }
  16. @Override
  17. public void method() {
  18. before();
  19. source.method();
  20. atfer();
  21. }
  22. private void atfer() {
  23. System.out.println("after proxy!");
  24. }
  25. private void before() {
  26. System.out.println("before proxy!");
  27. }
  28. }
    测试类:

[java] view plaincopy

  1. public class ProxyTest {
  2. public static void main(String[] args) {
  3. Sourceable source = new Proxy();
  4. source.method();
  5. }
  6. }
    输出:

before proxy!

the original method!
after proxy!
代理模式的应用场景:
如果已有的方法在使用的时候需要对原有的方法进行改进,此时有两种办法:
1、修改原有的方法来适应。这样违反了“对扩展开放,对修改关闭”的原则。
2、就是采用一个代理类调用原有的方法,且对产生的结果进行控制。这种方法就是代理模式。
使用代理模式,可以将功能划分的更加清晰,有助于后期维护!

转载地址:http://qnbsx.baihongyu.com/

你可能感兴趣的文章
occActiveX - ActiveX with OpenCASCADE
查看>>
iOS8中定位服务的变化(CLLocationManager协议方法不响应,无法回掉GPS方法,不出现获取权限提示)...
查看>>
BeanUtils\DBUtils
查看>>
VC 创建托盘,托盘tooltip。右键托盘菜单,点击别的地方会隐藏掉的问题。
查看>>
第一天,新的定义
查看>>
WPF EventSetter Handler Command
查看>>
polya定理,环形涂色
查看>>
day4-装饰器前奏
查看>>
forward和redirect的区别
查看>>
使用JavaMail完成邮件的编写
查看>>
洛谷P1576 最小花费
查看>>
封装了一个类,可生成验证码,缩略图,及水印图
查看>>
第一阶段项目总结
查看>>
Java集合详解
查看>>
myeclilpse打开文件所在位置的图标消失后的找回方法
查看>>
Android利用文本分割拼接开发一个花藤文字生成
查看>>
哈夫曼树的实现
查看>>
12-18Windows窗体应用小程序之记事本(1)
查看>>
毕业论文一次性修改所有字母和数字的字体
查看>>
结构体:HASH表模板
查看>>