亦称: Proxy
Provide a surrogate or placeholder for another object to control access to it. 为其他对象提供一种代理以控制对这个对象的访问。
<aside> ✅ 可以控制服务对象的生命周期
</aside>
<aside> ✅ 即使服务对象未初始化或不存在,代理也能正常工作
</aside>
<aside> ✅ 开闭原则
</aside>
<aside> ❌ 服务响应可能会延迟
</aside>
外观和代理模式都缓存了一个复杂实体并自行初始化,但代理模式与其服务对象遵循同一接口,代理对象和服务对象可以互换。
适配器模式为已有对象的接口进行修改,装饰模式在不改变对象接口的情况下为对象提供增强的接口,代理模式与装饰模式类似,但装饰模式强调增强,代理模式强调控制
装饰和代理都基于组合原则,将一个对象的部分工作委派给另一个对象,不同之处在于代理通常自行管理服务对象的生命周期,装饰的生成则总是由客户端控制