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

     

  • 相关阅读:
    基于Metaweblog API 接口一键发布到国内外主流博客平台
    uva144 Student Grants
    Uva 10452
    Uva 439 Knight Moves
    Uva 352 The Seasonal War
    switch语句
    java——基础知识
    我的lua学习2
    codeforces 431 D. Random Task 组合数学
    codeforces 285 D. Permutation Sum 状压 dfs打表
  • 原文地址:https://www.cnblogs.com/rogge7/p/7744667.html
Copyright © 2011-2022 走看看