代理模式

代理模式

由于某些原因需要给某对象提供一个代理以控制该对象的访问,此时,访问对象不合适或者无法直接引用目标对象,代理对象作为访问对象目标对象之间的中介

eg:找房子,通过中介公司找到合适的房子、买海外化妆品,通过海外代购买到手,其中中介、代购就是代理对象这一角色

优点

  • 代理模式是在客户端与目标对象之间起到一个中介作用,保护目标对象

  • 代理对象可以扩展目标对象的功能

  • 代理模式能将客户端与目标对象分离,一定程度上降低了系统的耦合度

缺点

  • 请求速度变慢

  • 增加系统的复杂度

角色

抽象主题、真实主题、代理类

模拟场景

汽车公司生产出售多种汽车、助力车、电动车、汽车 客户买车不可能直接到汽车厂下单购买,汽车公司在全国各地设立代理经销商, 代理经销商可以对外提供车辆出售,同时代理经销商在汽车厂原有的出厂价格上会涨价,客户买车后,经销商也会提供汽车的保修等

其中汽车厂为抽象主题提供出售车辆的接口、汽车公司为具体主题,代理经销商为代理类,客户通过代理类进行车辆的购买

实现方式

  • 静态代理:手动定义代理类

  • 动态代理:运行时程序动态生成代理类(JDK自带的动态代理、CGLIB、ASM)

Last updated