Day35. 代理模式

本文同步更新於blog

Proxy Pattern

为另一个对象提供一个替身占位符控制这个对象的访问


代理模式将类别分为两类:
分别是实体类别 (RealSubject)代理类别 (Proxy)

代理类别会与实体类别实现相同的介面
保存对实体类别的引用。


优点
控制访问的职责,不必写在实体类别。
有了代理类别,可以 延迟实例化 (lazy initialization) 实体类别。
可以有多种控制访问实体类别的方式。
可以在实体类别被访问时,做一些额外的事(不属於实体类别的职责)。

缺点
程序码复杂度提高。
回应可能会有所延迟。


与其他模式的比较:

[转接头模式]:
转接头模式只负责转化不同介面间的关系。
而代理模式则是实现相同的介面,处理更多访问相关的职责。

[装饰者模式]:
装饰者模式丰富既有行为时,原因较常是来自客户端
而代理模式丰富既有行为时,原因较常是来自服务端

[外观模式]:
外观模式的目的是提供简化接口
而代理模式的目的则是控制访问行为


常见的使用场景:

  1. 远端代理:控制访问远程对象,利用网路转发到远程执行。
  2. 虚拟代理:控制访问创建开销大的对象,待客户端有请求时才进行实例化。
  3. 安全代理:控制访问对象的许可权
  4. 智慧代理:处理访问对象时,不属於访问对象的职责。

ʕ •ᴥ•ʔ:当想控制访问对象时,很可能就是使用代理模式的时机。


<<:  第47天-学习一次性排程工作 at

>>:  python开启ansys软件问题 (2147221164, '类别未登录')

图的资料结构

3 图的资料结构 今天来介绍我们储存一张图的时候,几种常见的资料结构:相邻矩阵(Adjacency ...

Day5-Go变数介绍

变数型态 在学习 Go 语言前,我们先了解一下一些基本的变数型态(type),可简单分成以下几种: ...

Day09-Kubernetes那些事 - Ingress 篇(一)

前言 在上一篇文章介绍完 Service 後,看似解决了对外连接的问题,但大家一定会发现 port ...

【Day17】数据展示元件 - Infinite scroll

元件介绍 Infinite scroll 能在面对多笔资料时,让卷轴滑动到底部时再载入下一页面的资料...

Day29百变红酱-义大利肉酱

义大利肉酱是平常雪伦冰箱常备的料理,一次多做一点分装冷冻起来,想吃就可以随时拿出来吃,除了义大利面,...