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

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

难度中级
时长 2小时 0分
学习人数
综合评分9.70
184人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.7 逻辑清晰
  • 代理类 ProxySubject 被代理类 RealSubject 加入了InvocationHandler 的ProxyHandler 事务处理器
    查看全部
  • 、、、、、、、、、、、、
    查看全部
  • 、、、、、、、、、、、、
    查看全部
  • 、、、、、、、、、、、、、
    查看全部
  • 动态代理
    查看全部
  • 因为代理之间实现了相同的接口,他们之间是可以相互传递的,相互组合,更加灵活
    查看全部
  • /* * 仔细理解一下, 就是一层层嵌套叠加。。。 * 先调用ctp.move(); 输出 “汽车开始行驶...” * clp参数传到m.move方法;调用clp.move(),输出 “日志开始...” * car参数传到m.move方法;调用Car对象中的move方法。输出 “汽车行驶中....” * 然后调完clp.move()返回,输出 “日志结束...” * 调完返回ctp.move()返回,输出“汽车结束行驶... 汽车行驶时间: 毫秒” * */
    查看全部
  • 实现功能的叠加,需要很多子类
    查看全部
  • 继承方式和聚合方式都能实现静态代理,那种更适合???
    查看全部
  • AOP
    查看全部
    0 采集 收起 来源:课程总结

    2016-04-05

  • 设计理念
    查看全部
    0 采集 收起 来源:课程总结

    2016-04-05

  • sysout+alt+/ 快捷键System.out.println();
    查看全部
  • 动态代理的实现步骤
    查看全部
  • 3、将这个类load到内存当中,产生一个新的对象(代理对象); //load到内存 ClassLoader cl = ClassLoader.getSystemClassLoader(); Class c = cl.loadClass(“com.imooc.proxy.$Proxy0”); Constructor ctr = c.getConstructor(infuse);//传入接口参数 ctr.newInstance();//产生代理类的对象 4、return代理对象。 JDK动态代理,只能代理实现了接口的类,没有实现接口的类不能实现JDK的动态代理。 CGLIB动态代理,针对类来实现代理,对指定目标类产生一个子类,通过方法拦截技术拦截所有父类方法的调用。
    查看全部
  • 动态代理实现思路 实现功能:通过newProxyInstance返回代理对象, 1、声明一段源码(动态产生代理); 将源码注释掉存到一个str里; 可以创建事务处理器,动态处理业务逻辑,见3.3节; 写个继承自InvocationHandler的子类,将逻辑放在invoke方法中,两个参数(类对象和方法) 给newProxyInstance多一个参数InvocationHandler; 在str中还要把它的import引入加上。 2、编译源码(JDK Compile API),产生新的类(代理类); 通过java文件编译,String filename = System.getProperty(“user.dir”) + “/bin/com/imooc/proxy/$Proxy.java”; File file = new File(filename); 加入jar包,common-o.jar , 快速对文件进行读写删除操作。 FileUtils.writeStringToFile(file, str); 实现对任意对象任意接口。。。 //拿到编译器 JavaCompiler complier = ToolProvider.getSystemJavaCompiler(); //文件管理者 StandardJavaFileManager fileMgr = complier.getStandardFileManager(null,null,null);//diagnosticListener, locale,charset //获取文件 Iterable units = fileMgr.getJavaFileObjects(filename); //编译任务 CompilationTask t = complier.getTask(null, fileMgr, null,null,units); //进行编译 t.call(); fileMgr.close();
    查看全部

举报

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

微信扫码,参与3人拼团

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

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