摘要:
Java虚拟机使用每一个类的第一件事情就是将该类的字节码装载近来,装载类字节码的功能是由类装载器完成的,类装载器负责根据一个类的名称来定位和生成类的字节码数据后返回给Java虚拟机。最常见的类装载器是将要加载的类名转换成一个.class文件名,然后从文件系统中找到该文件并读取其中的内容,这种类装载器也不是直接将.class文件中的内容原封不动地返回给Java虚拟机,它需要将.class文件中的内容转换成Java虚拟机使用的类字节码。不管类装载器采用什么方式,只要能够在内存中制造出给Java虚拟机调用类字节码即可,所以把类装载器描述为类字节码的制造器更容易让人理解。 当一个类被加载后,Java. 阅读全文
摘要:
Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,Proxy是代理的意思,我们也许有代理服务器等概念,代理概念可以解释为:在出发点到目的地之间有一道中间层,意为代理.设计模式中定义:为其他对象提供一种代理以控制对这个对象的访问.为什么要使用Proxy?1.授权机制不同级别的用户对同一对象拥有不同的访问权利,如Jive论坛系统中,就使用Proxy进行授权机制控制,访问论坛有两种人:注册用户和游客(未注册用户),Jive中就通过类似ForumProxy这样的代理来控制这两种用户对论坛的访问权限.2.某个客户端不能直接操作到某个对象,但又必须和那个对象有所互动. 阅读全文
摘要:
为什么要用反射呢,既然在开发时就能够写好代码,干嘛还放到运行期去做,不光繁琐,而且效率也受影响。 带着这个疑问,google了一把,找到一个非常好的解释:1)当你做一个软件可以安装插件的功能,你连插件的类型名称都不知道,你怎么实例化这个对象呢?因为程序是支持插件的(第三方的),在开发的时候并不知道 。所以,无法在代码中 New出来 ,但反射可以, 通过反射, 动态加载程序集, 然后读出类, 检查标记 (特性 attributable)之后再实例化对象。就可以获得正确的类实例。反射的目的就是为了扩展未知的应用。比如你写了一个程序,这个程序定义了一些接口,只要实现了这些接口的dll都可以作为插件来 阅读全文