为了账号安全,请及时绑定邮箱和手机立即绑定

模式的秘密---代理模式

难度中级
时长 2小时 0分
学习人数
综合评分9.70
184人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.7 逻辑清晰
  • 静态代理概念
    查看全部
  • 代理模式基本概念
    查看全部
  • jdk动态代理
    查看全部
    0 采集 收起 来源:课程总结

    2015-02-10

  • jdk 动态代理:只能代理实现了某些接口的类,没有实现某些接口的类不能实现JDK动态代理; cglib动态代理:针对类来实现代理,通过继承来实现。
    查看全部
  • 动态代理:InvocationHandler接口 、JDK动态代理 1、目的:动态产生代理,实现对【不同类】,【不同方法】的代理 2、java动态代理类,位于java.lang.reflect包下,一般涉及两个类: (1)Interface InvocationHandler:该接口中仅定义了一个方法public object invoke(obj,method,args):实际使用中,obj指被代理类的对象,method指被代理的方法,args为该方法参数数组。这个抽象方法在代理类中动态实现 (2)Proxy:该类即为动态代理类:static Object newProxyInstance(ClassLoader loader,Class[] interfaces,InvocationHandler h):返回代理类的一个实例,返回后的代理类可以被当作代理类使用(可使用被代理类的在【接口中】声明过的方法)。 · 第一个参数loader为被代理类的加载器,通过被代理类.getClass().getClassLoader()得到 · 第二个参数interfaces为被代理类实现的所有接口,同样通过getClass().getInterface()得到 · 第三个参数handler就是自己实现的InvocationHandler的实现类的对象 3、***实现: · 声明一个代理h实现InvocationHandler接口,通过【构造方法接受被代理类】,并实现invoke方法,添加业务逻辑(实现原有功能并添加额外功能) · 在测试类中,通过共同实现接口的实例获得代理对象,并实现方法,如Interface1 i = (Interface1)Proxy.newProxyInstance(classLoader,classInterfaces,h); · 通过动态代理对象m,代用其方法i.fun();
    查看全部
  • 静态代理:代理和被代理对象在【代理之前】都是【确定】的。他们都实现【相同的接口或者继承相同的抽象类】 继承和聚合两种方式实现代理 聚合:一个类调用另一个类中的对象。
    查看全部
  • 第二个proxy动态代理类
    查看全部
  • 动态代理一般主要涉及两个类,第一个 InvocationHandler接口
    查看全部
  • 整体思路: 1. InvocationHandler对象聚合了原始的父类对象, 并抽取了公共的代理控制逻辑。 2. Proxy聚合了handler对象,并生成新的class;在新的class定义中对接口中的每个方法调用handler对象的对应方法。 生成proxy的四步: 1. 生成源代码; 2. 编译; 3. 加载代理类; 4. 生成代理对象。
    查看全部
  • jdk代理: 提供一个实现InvocationHandler的类用于额外操作 通过Proxy的newProxyInstance方法生成代理类 要求目标类一定是实现了某些接口的类
    查看全部
  • // 设计模式——代理模式 代理模式这种机制可以叫做AOP,在不改变原有代码的基础上,添加或者删除某些方法 例如: 要调用某个jar包中某个类的方法,但是不能改变源码,我们可以采用JDK的动态代理模式,在该方法的前后添加业务逻辑,如记录日志,权限控制等
    查看全部
    1 采集 收起 来源:课程总结

    2015-01-23

  • 看完第三节到这里后 很清楚了 proxy 和realsubject中间的invokationHandler是怎么来的了。虽然代码是很繁琐,但总算对JDK底层是怎么实现的有了进一步了理解。原来在proxy中的newProxyInstance()方法中,里面已经调用了,invoke()这个方法的了。
    查看全部
    0 采集 收起 来源:课程总结

    2015-01-20

  • 天书啊
    查看全部
  • 为其它对象提供一种代理,以控制对这个对象的访问
    查看全部
  • JDK与CGLIB
    查看全部

举报

0/150
提交
取消
课程须知
本课程是 Java 开发课程的高级课程,希望各位小伙伴们在学习本课程之前,了解以下内容: 1)初步具备面向对象的设计思维 2)了解多态概念 3)了解反射
老师告诉你能学到什么?
1、代理模式概念机分类 2、代理模式应用场景 3、掌握静态代理、动态代理运用 4、理解JDK动态代理实现原理

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!