type
status
date
slug
summary
tags
category
icon
password
整理定义
中文名称:代理模式
英文名称:proxy pattern
出处 | 定义 |
中国大百科全书 | 为一个子系统的所有接口对外提供一致的高层访问接口,使子系统更便于使用的一种设计模式 |
设计模式 | 代理模式是一种结构型设计模式, 让你能够提供对象的替代品或其占位符。 代理控制着对于原对象的访问, 并允许在将请求提交给对象前后进行一些处理。 |
百度百科 | 代理模式(英语:Proxy Pattern)是程序设计中的一种设计模式。
所谓的代理者是指一个类别可以作为其它东西的接口。代理者可以作任何东西的接口:网上连接、存储器中的大对象、文件或其它昂贵或无法复制的资源。 |
维基百科 | 在计算机编程中,代理模式是一种软件设计模式。 代理,以其最一般的形式,是一个充当其他东西的接口的类。 代理可以与任何东西交互:网络连接、内存中的大对象、文件或其他一些昂贵或无法复制的资源。 简而言之,代理是一个包装器或代理对象,客户端调用它来访问幕后的真实服务对象。 使用代理可以简单地转发到真实对象,或者可以提供额外的逻辑。 |
复述展开
What is proxy pattern?
代理模式是一种结构型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。在代理模式中,一个类代表另一个类的功能。
🌰*1
信用卡是银行账户的代理, 银行账户则是一大捆现金的代理。 它们都实现了同样的接口, 均可用于进行支付。 消费者会非常满意, 因为不必随身携带大量现金; 商店老板同样会十分高兴, 因为交易收入能以电子化的方式进入商店的银行账户中, 无需担心存款时出现现金丢失或被抢劫的情况。
🌰*2
一个大图像的加载可能会非常耗费资源,我们可以在图像加载完毕之前使用一个轻量级的代理对象来代替真实的图像。只有当用户真正需要查看图像时,我们才使用真实的图像替换代理对象,这就是虚拟代理的例子。
代理模式结构
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fdea38628-64dc-40fd-8d17-2efa87e3d554%2F992912a5-bf0d-4691-8a6a-934f17fe24fd%2FUntitled.png?table=block&id=adcd8e52-88c0-4f71-bbe7-516052af3798&t=adcd8e52-88c0-4f71-bbe7-516052af3798&width=480&cache=v2)
- 服务接口 (Service Interface) 声明了服务接口。 代理必须遵循该接口才能伪装成服务对象。
- 服务 (Service) 类提供了一些实用的业务逻辑。
- 代理 (Proxy) 类包含一个指向服务对象的引用成员变量。 代理完成其任务 (例如延迟初始化、 记录日志、 访问控制和缓存等) 后会将请求传递给服务对象。
通常情况下, 代理会对其服务对象的整个生命周期进行管理。
- 客户端 (Client) 能通过同一接口与服务或代理进行交互, 所以你可在一切需要服务对象的代码中使用代理。
优缺点
优点:
- 你可以在客户端毫无察觉的情况下控制服务对象。
- 如果客户端对服务对象的生命周期没有特殊要求, 你可以对生命周期进行管理。
- 即使服务对象还未准备好或不存在, 代理也可以正常工作。
- 开闭原则。 你可以在不对服务或客户端做出修改的情况下创建新代理。
缺点:
- 代码可能会变得复杂, 因为需要新建许多类。
- 服务响应可能会延迟。
理解体会
代理模式在需要控制对对象的访问,或者需要在访问对象时添加额外功能的时候非常有用。但是,使用代理模式也需要谨慎,因为它可能会导致系统变得复杂,特别是如果管理和维护代理对象和真实对象之间的关系变得复杂的话。
快速跳转链接
【概念解析】启动
【概念解析】Day 1 - 10
【概念解析】Day 11 - 20
【概念解析】Day 21 - 30
【概念解析】Day 31 - 40
【概念解析】Day 41 - 50
【概念解析】Day 51 - 60
【概念解析】Day 61 - 70
【概念解析】Day 71 - 80
【概念解析】Day 81 - 90
- 作者:eachenkuang
- 链接:https://kuangyichen.com/article/industry-day39
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。