目录

文章目录

  • 目录
  • 代理模式
  • 应用场景
  • 代码示例

代理模式

代理模式,为其他对象提供一种代理,以此控制一个对象的访问方式。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

应用场景

  • 远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是在本机器中,也可是在另一台机器中。远程代理又叫做大使(Ambassador)。好处是系统可以将网络的细节隐藏起来,使得客户端不必考虑网络的存在。

  • 虚拟(Virtual)代理:根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真正创建,例如:图片延迟加载。使用虚拟代理模式的好处就是代理对象可以在必要的时候才将被代理的对象加载;代理可以对加载的过程加以必要的优化。当一个模块的加载十分耗费资源的情况下,虚拟代理的好处就非常明显。

  • 保护代理(Protection Proxy ):控制对原始对象的访问。保护代理用于对象应该有不同 的访问权限的时候。

  • 智能引用(Smart Ref

设计模式 — 结构型模式 — 代理模式相关推荐

  1. 设计模式(结构型)之代理模式(Proxy Pattern)

    PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbob ...

  2. Java设计模式之结构型:代理模式

    前言: 我们一般在租房子时会去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做:再比如我们打官司需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们 ...

  3. 每天学习一个设计模式(七):结构型之代理模式

    目录 一.基本概念 二.通俗解释 三.代理模式的分类 1.普通代理 2.强制代理 代理是有个性的 3.动态代理 一.基本概念 代理模式(Proxy Pattern)是一个使用率非常高的模式,其定义如下 ...

  4. 设计模式 - 结构型 - 装饰者模式

    2019独角兽企业重金招聘Python工程师标准>>> 介绍 意图:动态地给一个对象添加一些额外的职责.就增加功能来说,装饰器模式相比继承更为灵活. 主要解决:一般的,我们为了扩展一 ...

  5. [设计模式-结构型]享元模式(Flyweight )

    概括 名称 Flyweight 结构 动机 运用共享技术有效地支持大量细粒度的对象. 适用性 一个应用程序使用了大量的对象. 完全由于使用大量的对象,造成很大的存储开销. 对象的大多数状态都可变为外部 ...

  6. 【设计模式·结构型】桥接模式Bridge Pattern

    目的 该模式用于分离抽象与实现,并且抽象与实现可以独立变化 应用场景 (1)希望抽象和实现之间没有固定的绑定关系,不同抽象接口和实现可以组合和扩充,程序运行时动态选择.切换具体实现 (2)类层次结构, ...

  7. 设计模式(结构型)之享元模式(Flyweight Pattern)

    PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbob ...

  8. Java设计模式之结构型:组合模式

    前言: 我们对于上面两幅图片肯定非常熟悉,这两幅图片我们都可以看做是一个文件结构,对于这样的结构我们称之为树形结构.在数据结构中我们知道可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可 ...

  9. Java设计模式之结构型:外观模式

    一.什么是外观模式: 外观模式通过对客户端提供一个统一的接口,用于访问子系统中的一群接口.使用外观模式有以下几点好处: (1)更加易用:使得子系统更加易用,客户端不再需要了解子系统内部的实现,也不需要 ...

  10. Java设计模式之结构型:桥接模式

    一.什么是桥接模式: 桥接,顾名思义,就是用来连接两个部分,使得两个部分可以互相通讯,桥接模式的作用就是为被分离的抽象部分和实现部分搭桥.在现实生活中一个物品在搭配不同的配件时会产生不同的动作和结果, ...

最新文章

  1. Python基础教程:return函数的用法
  2. C++中函数模板的用法详细解析
  3. android标题显示栏菜单在标题之下,Android菜单项标题不显示
  4. TYVJ P1012 火柴棒等式 Label:枚举
  5. C++11 实现线程池
  6. java.io.serializable_java.io.Serializable浅析 | 学步园
  7. kmeans算法中的sse_《Kmeans的K值确定》
  8. 关于程序员的教育和培训
  9. 解决mac压缩包在windows下解压乱码问题。
  10. 海康摄像头忘记密码,自己如何快速重置密码
  11. 常用的大功率电阻有哪些,电阻功率降额设计要注意什么
  12. simulink如何简单的控制模块间执行顺序
  13. 20年的星际争霸,再回首
  14. android报错必须64位,64位系统使用Android虚拟机问题
  15. DSP与STM32的对比浅见(二)
  16. 智能密码钥匙查看器UkeyViewer
  17. 基于JAVA核酸检查预约系统设计与实现 开题报告
  18. 如何科学养一只鸽子为你飞鸽传书——程序间异步通信_莫韵乐的Linux英雄传
  19. python中、不论类的名字是什么、构造方法的名字都是( )_2020年《python程序设计》基础知识及程序设计598题GA[含参考答案]...
  20. “F1 车王”昏迷 10 年能受访了?某杂志 AI 生成“舒马赫专访”惹众怒,涉事主编遭解雇...

热门文章

  1. C#开发Unity游戏教程之判断语句
  2. 计算机网络与应用测试题,计算机网络技术与应用测试题
  3. 弹出页(指定高度,自由拖动,点击空白包括状态栏触发)
  4. 内存地址 哪个程序_记一次排查线上程序内存的忽高忽低,又是大集合惹祸了...
  5. linux内核更新/修补程序,Ubuntu 18.04.3 LTS无需重启即可轻松修补Linux内核
  6. gets会读取回车键吗_Linux Shell 读取从键盘输入的数据
  7. java I/O
  8. R显卡VR性能如何?AMD发布 VRMark Cyan Room 测试结果
  9. html5网页仿写,纯CSS代码模仿绘制蚂蚁庄园页面
  10. 招银网络笔试java_2020招银网络科技校园招聘常见问题