zoukankan      html  css  js  c++  java
  • 《尚学堂_史上最易懂的设计模式视频》--章节5 动态代理-JDK6自带的编译器

    所有的设计模式中最难的一个

    ==组合和聚合是有很大区别的
    组合和聚合是有很大区别的,这个区别不是在形式上,而是在本质上:
    比如A类中包含B类的一个引用b,当A类的一个对象消亡时,b这个引用所指向的对象也同时消亡(没有任何一个引用指向它,成了垃圾对象),
    这种情况叫做组合,反之b所指向的对象还会有另外的引用指向它,这种情况叫聚合。 在实际写代码时组合方式一般会这样写: A类的构造方法里创建B类的对象,也就是说,当A类的一个对象产生时,B类的对象随之产生,当A类的这个对象消亡时,它所包含的B类的对象也随之消亡。 聚合方式则是这样: A类的对象在创建时不会立即创建B类的对象,而是等待一个外界的对象传给它 传给它的这个对象不是A类创建的。 现实生活中: 人和人和手,脚是组合关系,因为当人死亡后人的手也就不复存在了。人和他的电脑是聚合关系。
    ==随机数
    random.nextInt() 为 java.util.Random类中的方法; 
    Math.random() 为 java.lang.Math 类中的静态方法。
    ==动态代理
        

    不用通过类继承的方式,会产生很多类出来,类爆炸。聚合的本质

    任何实现了Moveabel接口的对象都可以被我这个代理 作为被代理对象。可以代理直接的相互组合。

    静态代理:

    组合和聚合是有很大区别的,这个区别不是在形式上,而是在本质上:
    比如A类中包含B类的一个引用b,当A类的一个对象消亡时,b这个引用所指向的对象也同时消亡(没有任何一个引用指向它,成了垃圾对象),
    这种情况叫做组合,反之b所指向的对象还会有另外的引用指向它,这种情况叫聚合。 在实际写代码时组合方式一般会这样写: A类的构造方法里创建B类的对象,也就是说,当A类的一个对象产生时,B类的对象随之产生,当A类的这个对象消亡时,它所包含的B类的对象也随之消亡。 聚合方式则是这样: A类的对象在创建时不会立即创建B类的对象,而是等待一个外界的对象传给它 传给它的这个对象不是A类创建的。 现实生活中: 人和人和手,脚是组合关系,因为当人死亡后人的手也就不复存在了。人和他的电脑是聚合关系。

     ==26课时--这节课开始有难度

    AOP就是动态代理的一种方式

    动态代理:根本看不到代理类的名字,内部自己生成一段代码,动态编译这段代码,生成一个代理类。

    动态编译3方式;JDK6 Complier API,开源的CGLib(底层用到ASM), ASM直接生成二进制(连编译器都不用了);

     学生提到:不如写个类,动态代理是解决类太多的问题。

    编译:System.getProperty("user.dir");会输出项目的根目录

    后面出现一个问题,获取编译器获取不到。在Preferences中发现用了JRE环境(这个只是运行环境不包含编译环境)

    ==27课时

     1、添加一个新的,并且是用JDK的,而不用公用的JRE。

      2、到项目的 BuildPath中Libraries 将JRE System Libraries 删除, 添加Alternate JRE,就是第一步添加的jdk。

     

    即可输出看到 编译器的类名,也可以拿到 SUN公司提供的编译器了。

    如何使用:代码接着上方的截图。

    利用JavaCompiler编译java文件(一个简单封装的工具类) - CSDN博客
    http://blog.csdn.net/u014653197/article/details/52796006

    使用JavaCompiler编译java源文件 - vDemo - 博客园
    http://www.cnblogs.com/demo111/p/4518137.html

    Window - Show View- Navigator 可以真实反映硬盘的情况。

    ClassLoader 可以加载bin中的.class文件。需要加载其他路径用URLClassLoader

     

  • 相关阅读:
    安卓虚拟机启动后报错: 类似 SDK Manager] Error: Error parsing .....devices.xml 解决方案
    error when loading the sdk 发现了元素 d:skin 开头无效内容 转自http://blog.csdn.net/yueqinglkong/article/details/46340571
    mysql 5.5及以前版本的编码问题“Incorrect string value: 'xE6x9BxB9xE5x86xAC...' for column 'realname' at row 1”
    HDU 1024 Max Sum Plus Plus(基础dp)
    POJ 3026 --Borg Maze(bfs,最小生成树,英语题意题,卡格式)
    算法分类合集(转)
    ACM训练计划建议(转)
    The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple
    The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple
    iOS消息推送机制的实现
  • 原文地址:https://www.cnblogs.com/rogge7/p/7744667.html
Copyright © 2011-2022 走看看