为什么80%的码农都做不了架构师?>>>   

定义:代理模式就是给一个对象提供一个代理,并由代理对象控制对原对象的引用。

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

类图:

在代理模式中有如下三个角色:

Subject: 抽象角色。声明真实对象和代理对象的共同接口。

Proxy: 代理角色。代理对象与真实对象实现相同的接口,所以它能够在任何时刻都能够代理真实对象。代理角色内部包含有对真实对象的引用,所以她可以操作真实对象,同时也可以附加其他的操作,相当于对真实对象进行封装。

RealSubject: 真实角色。它代表着真实对象,是我们最终要引用的对象

代码:

public interface Sourceable {public void method();
}
public class Source implements Sourceable {@Overridepublic void method() {System.out.println("the original method!");}
}
public class Proxy implements Sourceable {private Source source;public Proxy(){//默认的话,是某个具体对象的代理this.source = new Source();}public Proxy(Sourceable sourceable){this.source = sourceable;}@Overridepublic void method() {before();source.method();atfer();}private void atfer() {System.out.println("after proxy!");}private void before() {System.out.println("before proxy!");}
}
public class ProxyTest {public static void main(String[] args) {Sourceable source = new Proxy();source.method();}}

代理模式的应用场景:

如果已有的方法在使用的时候需要对原有的方法进行改进,此时有两种办法:

1、修改原有的方法来适应。这样违反了“对扩展开放,对修改关闭”的原则。

2、就是采用一个代理类调用原有的方法,且对产生的结果进行控制。这种方法就是代理模式。

使用代理模式,可以将功能划分的更加清晰,有助于后期维护!

转载于:https://my.oschina.net/jewill/blog/417144

设计模式学习笔记(9)——代理模式相关推荐

  1. 设计模式学习笔记之-代理模式

    2019独角兽企业重金招聘Python工程师标准>>>       代理模式中,客户不会直接调用目标对象而是通过一个代码对象,客户调用代理对象代理对象去调用目标对象,起到对象与对象间 ...

  2. 设计模式学习笔记之代理模式

    代理模式 为另一个对象提供一个替身或占位符以控制对这个对象的访问. 使用代理模式创建代表对象,让代表对象控制某个对象的访问,被代理的对象可以是远程的对象.创建开销大的对象或需要安全控制的对象. 在代理 ...

  3. 设计模式学习笔记——解释器(Interpreter)模式

    设计模式学习笔记--解释器(Interpreter)模式 @(设计模式)[设计模式, 解释器模式, Interpreter] 设计模式学习笔记解释器Interpreter模式 基本介绍 解释器案例 类 ...

  4. 设计模式学习笔记——命令(Command)模式

    设计模式学习笔记--命令(Command)模式 @(设计模式)[设计模式, 命令模式, command] 设计模式学习笔记命令Command模式 基本介绍 命令案例 类图 实现代码 Command接口 ...

  5. 设计模式学习笔记——状态(State)模式框架

    设计模式学习笔记--状态(State)模式框架 @(设计模式)[设计模式, 状态模式, State] 设计模式学习笔记状态State模式框架 基本介绍 状态案例 类图 实现代码 State接口 Day ...

  6. 设计模式学习笔记——备忘录(Memento)模式

    设计模式学习笔记--备忘录(Memento)模式 @(设计模式)[设计模式, 备忘录模式, memento] 设计模式学习笔记备忘录Memento模式 基本介绍 备忘录案例 类图 实现代码 Memen ...

  7. 设计模式学习笔记——观察者(Observer)模式

    设计模式学习笔记--观察者(Observer)模式 @(设计模式)[设计模式, 观察者模式, Observer] 设计模式学习笔记观察者Observer模式 基本介绍 观察者案例 类图 实现代码 Ob ...

  8. 设计模式学习笔记——外观(Facade)模式

    设计模式学习笔记--外观(Facade)模式 @(设计模式)[设计模式, 外观模式, facade] 设计模式学习笔记外观Facade模式 基本介绍 外观案例 类图 实现代码 Database类 ma ...

  9. 设计模式学习笔记——访问者(Visitor)模式

    设计模式学习笔记--访问者(Visitor)模式 @(设计模式)[设计模式, 访问者模式, visitor] 设计模式学习笔记访问者Visitor模式 基本介绍 访问者案例 类图 实现代码 Visit ...

  10. 设计模式学习笔记——装饰(Decorator)模式

    设计模式学习笔记--装饰(Decorator)模式 @(设计模式)[设计模式, 装饰模式, decorator] 设计模式学习笔记装饰Decorator模式 基本介绍 装饰案例 类图 实现代码 Dis ...

最新文章

  1. R安装包源设置的常见方式及国内常用源
  2. 「强化学习可解释性」最新2022综述
  3. 周期串java_求最小周期串
  4. 大型网站演化发展历程之二
  5. 子图同构算法——Ullmann算法(1)不包含refine procedure的简单穷举算法。
  6. byte转换为string乱码_每日一课 | 如何将int转换为String
  7. 手把手带你入门Python爬虫(四、ORM与peewee)
  8. 【C 语言】一元二次方程
  9. CCF CSP 201809-1 卖菜
  10. 导数与微分的知识点思维导图_高中生物思维导图知识点总结
  11. spring相互依赖怎么解决_被问到Spring循环依赖怎么解决?秀给面试官看!内附图解...
  12. CentOS安装vim
  13. C语言Windows程序设计-第三天-属于自己的窗口
  14. 海康威视智能终端获取实时人脸体温识别记录二次开发java
  15. 圆锥曲线之用齐次法求解直线过定点问题
  16. java 字符串排列组合_字符串排列组合问题
  17. ODL(C版本)安装过程
  18. 2020北京邮电大学计算机学院复试经验分享
  19. php控制树莓派GPIO
  20. 倍福--232/485通信

热门文章

  1. wpf 修改label值_WPF 获取动态添加控件的值
  2. python和javascript详细对比_python与javascript 引入模块的方法对比
  3. 汇编语言典型例子详解_从架构到 RTOS 详解 DSP 和 MCU 的区别和联系
  4. 常见JavaScript基础面试题上(附答案)
  5. MATLAB Simulink 做BP PID报错:Error :*** during flag=* call must be a real vector of length 3
  6. CSS学习03之基本选择器
  7. 人工神经网络理论、设计及应用_TensorFlow深度学习应用实践:教你如何掌握深度学习模型及应用...
  8. 数据结构 - 递归
  9. HashSet源码解析
  10. 对一致性Hash算法,Java代码实现的深入研究