Day39【概念解析】代理模式
目录 ▼
整理定义
中文名称:代理模式
英文名称:proxy pattern
复述展开
What is proxy pattern?
📌 代理模式是一种结构型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。在代理模式中,一个类代表另一个类的功能。
🌰*1
信用卡是银行账户的代理, 银行账户则是一大捆现金的代理。 它们都实现了同样的接口, 均可用于进行支付。 消费者会非常满意, 因为不必随身携带大量现金; 商店老板同样会十分高兴, 因为交易收入能以电子化的方式进入商店的银行账户中, 无需担心存款时出现现金丢失或被抢劫的情况。
🌰*2
一个大图像的加载可能会非常耗费资源,我们可以在图像加载完毕之前使用一个轻量级的代理对象来代替真实的图像。只有当用户真正需要查看图像时,我们才使用真实的图像替换代理对象,这就是虚拟代理的例子。
代理模式结构

-
服务接口 (Service Interface) 声明了服务接口。 代理必须遵循该接口才能伪装成服务对象。
-
服务 (Service) 类提供了一些实用的业务逻辑。
-
代理 (Proxy) 类包含一个指向服务对象的引用成员变量。 代理完成其任务 (例如延迟初始化、 记录日志、 访问控制和缓存等) 后会将请求传递给服务对象。
-
客户端 (Client) 能通过同一接口与服务或代理进行交互, 所以你可在一切需要服务对象的代码中使用代理。
优缺点
优点:
-
你可以在客户端毫无察觉的情况下控制服务对象。
-
如果客户端对服务对象的生命周期没有特殊要求, 你可以对生命周期进行管理。
-
即使服务对象还未准备好或不存在, 代理也可以正常工作。
-
开闭原则。 你可以在不对服务或客户端做出修改的情况下创建新代理。
缺点:
-
代码可能会变得复杂, 因为需要新建许多类。
-
服务响应可能会延迟。
理解体会
代理模式在需要控制对对象的访问,或者需要在访问对象时添加额外功能的时候非常有用。但是,使用代理模式也需要谨慎,因为它可能会导致系统变得复杂,特别是如果管理和维护代理对象和真实对象之间的关系变得复杂的话。