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

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

难度中级
时长 2小时 0分
学习人数
综合评分9.70
184人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.7 逻辑清晰
  • 1创建一个实现Invocationhandler的类,实现ivoke method 2创建被代理类以及接口 3、调用Proxy的静态方法,创建一个代理类 newProxyInstance(ClassLoader,Interface,InvocationHandler)
    查看全部
  • 动态代理实现思路
    查看全部
  • 两种代理的区别
    查看全部
  • 动态代理实现步骤
    查看全部
  • 动态代理中class
    查看全部
  • java动态代理
    查看全部
  • java动态代理
    查看全部
  • 设计模式——代理模式——静态代理的概念 一、静态代理 1、静态代理:代理和被代理对象在【代理之前】都是【确定】的。他们都实现【相同的接口或者继承相同的抽象类】 2、代理实现方法: (1)继承法:代理类直接【继承】被代理类,实现其原有方法,并添加一些额外功能 (2)聚合方法:代理类实现【相同的功能接口:很重要,事项相同接口,不同代理也可以进行相互代理】,并在内声明一个被代理类的对象(类似封装),通过内部对象实现其原有方法,并添加额外功能
    查看全部
  • 代理模式这种机制可以叫做AOP(Aspect Oriented Programming)面向切面编程,在不改变原有类的方法基础上,添加或者删除某些方法(增加业务逻辑) 例如: 要调用某个jar包中某个类的方法,但是不能改变源码,我们可以采用JDK的动态代理模式,在该方法的前后添加业务逻辑,如记录日志,权限控制等
    查看全部
    0 采集 收起 来源:课程总结

    2015-04-16

  • 自己实现JDK动态代理的思路: 实现功能:通过Proxy的newProxyInstance()返回代理对象 1. 声明一段源码(动态产生代理,Java的文件名要注意--$Proxy0) 2. 编译源码(JDK Compiler API),产生新的类(代理类) 3. 将这个类load到内存当中,产生一个新的对象(代理对象) 4. return代理对象 设置换行符:String rt = "\r\n"; 获取文件路径:String fileName = System.getProperty("user.dir")+"/bin/com/imooc/proxy/$Proxy.java";
    查看全部
  • 一、JDK动态代理与CGLIB动态代理的区别 1、JDK:针对接口 · 只能代理【实现了接口的类】 · 没有实现接口的类不能实现JDK的动态代理 2、CGLIB:针对类 · 针对类来实现代理的 · 对指定目标类产生一个子类,通过方法拦截技术拦截所有父类方法的调用 · 注意:不能对final修饰的类进行代理 二、CGLIB:是一个强大的开源项目,可以在运行期扩展Java类与实现Java接口。
    查看全部
  • 一、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(); 4、所谓Dynamic Proxy是这样一种class: 它是在运行时生成的class 该class需要实现一组interface 使用动态代理类时,必须实现invocationhandler接口 5、动态代理实现步骤(如图)
    查看全部
  • 1、聚合代理优于继承代理。因为实现功能叠加的情况下,聚合代理通过相互代理可以实现功能重用,而继承代理必须写多个类来实现多功能叠加,可导致类的急剧膨胀。 2、但静态代理只能代理一种类型的被代理类,换个类型的就不行了,这需要动态代理 /* * 仔细理解一下, 就是一层层嵌套叠加。。。 * 先调用ctp.move(); 输出 “汽车开始行驶...” * clp参数传到ctp.move()中的m.move方法;调用clp.move(),输出 “日志开始...” * car参数传到clp.move()中m.move方法;调用Car对象中的move方法。输出 “汽车行驶中....” * 然后调完clp.move()返回,输出 “日志结束...” * 调完返回ctp.move()返回,输出“汽车结束行驶... 汽车行驶时间: 毫秒” * */
    查看全部
  • 一、静态代理 1、静态代理:代理和被代理对象在【代理之前】都是【确定】的。他们都实现【相同的接口或者继承相同的抽象类】 2、代理实现方法: (1)继承法:代理类直接【继承】被代理类,实现其原有方法,并添加一些额外功能 (2)聚合方法:代理类实现【相同的功能接口:很重要,事项相同接口,不同代理也可以进行相互代理】,并在内声明一个被代理类的对象(类似封装),通过内部对象实现其原有方法,并添加额外功能
    查看全部
  • 一、概念 代理模式基础:面向对象设计思维;多态概念;反射机制 1、代理模式定义:为【其他对象】提供一种【代理】,以【控制对这个对象的访问】 2、代理对象起到中介作用,可以去掉功能服务,增加额外服务 二、分类 常见代理模式:远程代理;虚拟代理;保护代理;智能引用代理 1、远程代理:c/s模式,为不同地理的对象C,提供局域网代表对象S(类似于客户端和服务器端,总店查询分店的情况) 2、保护代理:控制对一个对象的访问权限(发帖功能,客户可以浏览,但是删除、评论必须注册才能进行) 3、智能引用代理:提供对目标对象一些额外的服务(车票代售点,增加额外服务,限制某些特定功能,如退票,改签等) 4、虚拟代理:根据需要将资源消耗很大的对象进行延迟,真正需要的时候才进行创建。(网页中图片的加载,先用一张虚拟的图片进行显示,等图片加载完成后再进行显示)
    查看全部

举报

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

微信扫码,参与3人拼团

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

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