【10月21日】代理模式

2020年11月23日 阅读数:8
这篇文章主要向大家介绍【10月21日】代理模式,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

设计模式

  • 设计模式(Design Pattern)是一套反复被使用、多人知晓、通过分类编目的代码设计经验的总结
  • 使用设计模式是为了可重复用代码、让代码更容易被他人理解、保证代码可扩展性和可维护性
  • 通用设计模式有23个,每个设计模式都是某一类经典问题的解决方案

设计模式的本质

  • 面向对象设计模式:编程

    要真正理解设计模式就须要透彻理解面向对象设计原则的面向对象三大特性(封装、继承、多态)设计模式

  • 面向对象编程技术:安全

    设计模式的本质是面向对象编程技术的熟练和灵活应用网络


学习设计模式 五要素

  1. 名称性能

    每一种设计模式都有名称,都是通过专门分类编目的,以便于学习交流
  2. 问题学习

    每一种设计模式都是某一类典型问题的解决方案
  3. 实现设计

    每一种设计模式都有一种或多种代码实现方式(UML类图)
  4. 优缺点代理

    每一种设计模式都存在优缺点(没有天衣无缝的解决方案)
  5. 适用场景面向对象设计模式

    每一种设计模式都有其常见典型的使用场景

代理模式


定义

代理模式是为目标对象建立代理对象以提供一种代理机制,让代理对象能控制目标对象的访问,而且能够在不改变目标对象的状况下为目标对象添加额外的功能对象


分类

  • 静态代理
在程序运行前由开发人员提早为目标类建立代理类
  • 动态代理
在程序运行过程时运用反射机制动态为目标类建立代理类

优缺点

优势

  • 代理模式在客户对象和目标之间起到一个中介做用和保护目标对象的做用
  • 代理对象能够扩展目标对象功能
  • 代理模式能将客户与目标对象分离,在必定程度上下降了系统的耦合度,增长了程序的可扩展性

缺点

  • 代理模式会形成系统设计中的类数量增长
  • 在客户对象和目标对象之间增长一个代理对象,会形成请求处理速度变慢
  • 在必定程度上增长了系统的复杂度

使用场景

远程代理

为一个位于不一样网络计算机的对象提供一个本地的代理(如本地网盘)

虚拟代理

若是须要建立一个消耗较大的对象,先建立一个消耗较小的的对象来表示,真实对象只在须要时才被真实建立(如图片显示)

安全代理

用来控制不一样种类客户对真实对象的访问权限

智能指引

主要用于调用目标对象时,代理附加一些额外的处理功能(如GC垃圾回收)

延迟加载

为了提升系统的性能,延迟对目标对象的加载(如MyBatis 的延时加载)