设计模式 第五节 代理模式(Proxy)

代理模式用于控制对象访问,分为静态和动态两种。静态代理中代理类固定,对应一个被代理类;动态代理则在运行时指定被代理类,JDK通过InvocationHandler实现,但要求被代理类实现接口,而Cglib则基于类进行代理。代理模式能增强对象功能,但也可能使请求速度变慢。
摘要由CSDN通过智能技术生成

1、    代理模式的作用是为其他对象提供一种代理以控制对这个对象的访问。
    在某些情况下一个客户对象不想或不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介作用
2、    应用场景:AOP实现,拦截器、中介、延迟加载
3、 代理模式分类:静态代理、动态代理
    在静态代理中,被代理的类是固定的,一个代理类对应一个被代理类。
    动态代理就是被代理的类是代码运行时指定的。JDK 为我们提供了一种动态代理的实现,通过实现 InvocationHandler 接口来实现动态代理。
        JDK 动态代理也有不足之处,它要求被代理类一定要实现某个接口。Cglib 动态代理,它是基于类做的代理,而不是基于接口。
4、    静态代理角色构成:
    1)接口        抽象角色,声明真实对象和代理对象的共同接口
    2)实现类    实现接口    真实角色,代理角色所代表的真实对象,是我们最终要引用的对象
    3)代理类    实现接口,定义实现类的引用        代理角色,代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的
        接口以便在任何时刻都能代理真实对象。代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装
5、 动态代理
    JDK的InvocationHandler 基于接口的代理,要求被代理类一定要实现某个接口
    Cglib 动态代理,是基于类做的代理
    
6、 优点:扩展性强,对象更智能。
    缺点:代理类由

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值