# 代理模式

> 代理模式（英语：proxy pattern），是程式设计中的一种设计模式。所谓的代理者是指一个类别可以作为其它东西的介面。代理者可以作任何东西的介面：网路连接、记忆体中的大物件、档案或其它昂贵或无法复制的资源。

- ID: m00544
- 分类: create
- 领域: 设计思维

## 定义

为其他对象提供一种代理以控制对这个对象的访问。脚手架作用：控制访问与增强功能。秘书是CEO的代理，CDN是服务器的代理。作为脚手架，它教导我们在核心资源和外部请求之间建立“缓冲区”：进行权限控制、缓存加速或日志记录，保护核心不被直接冲击。

## 机制

在客户端与目标对象之间插入一个代理对象，由代理拦截并控制对真实对象的访问。代理可在转发请求前后加入权限校验、缓存、日志、延迟加载等增强逻辑；真实对象对客户端保持透明，客户端以为自己在和真实对象交互，实际上所有调用都经由代理中转。

## 练习

1. 定义真实对象与代理共同实现的接口；2. 真实对象实现核心业务逻辑；3. 代理持有真实对象引用，在方法中加入控制或增强后转发；4. 客户端面向接口调用代理而非真实对象。

## 脚手架用法

控制访问与增强功能。秘书是CEO的代理，CDN是服务器的代理。作为脚手架，它教导我们在核心资源和外部请求之间建立“缓冲区”：进行权限控制、缓存加速或日志记录，保护核心不被直接冲击。

[阅读网页](https://thinkingmodels.site/entries/detail/m00544)
