《深入理解Java虚拟机》 类 & 加载

类加载,即把描述类的字节数据(class文件)加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。与那些编译时需要链接的语言不同,java中类型的加载、链接和初始化都在运行期间完成,这种策略虽然在类加载时增加了一些性能开销,但是为java应用程序提供了高度的灵活性,Java能够动态扩展的语言特性就是依赖运行期动态加载动态连接这些特点来实现的。

比如,编写一个面向接口的应用程序,可以等到运行时再指定其实现类。用户可以通过Java预定义或自定义的加载器,让一个本地应用程序在运行时从网络或其它地方加载一个二进制流作为程序代码的一部分。这种组装应用程序的方式已广泛应用于Java程序之中,从最基础的Applet、JSP到相对复杂的OSGI。

《深入理解Java虚拟机》 类 & class文件

class文件是一种字节码存储格式,它只与Java虚拟机绑定,因此它是Java实现平台无关性的基础。另外,任何其它语言,只要能编译成一个有效class文件,那么也可以在Java虚拟机上执行,因此,通过class这个媒介,Java虚拟机同时拥有语言无关的中立特性

设计模式 代理模式

代理是一种常用的设计模式,给某个对象提供一个代理,并由代理对象来控制对真实对象的访问。它的方式就是让代理类持有目标类的实例,并在对目标类进行操作的前后加入一层代理操作。

设计模式 原型模式

通过给定的原型对象,获取所要创建的对象类型,然后复制这个原型对象创建出更多同类型的对象。

1. 结构

  • 客户角色(Client):客户类提出创建对象的请求。
  • 抽象原型角色(Prototype):给出具体原型类需要的所有接口。
  • 具体原型角色(ConcretePrototype):被复制的对象。

原型模式的关键在于如何实现克隆方法。

设计模式 建造者模式

有时,一个对象会由不同的部件组成,一些情况下,在某些部件没有恰当的值之前,对象不能作为一个完整的产品使用,甚至有时候,一个对象的组成部件必须按照某个顺序赋值才有意义。建造者模式利用导演者对象以及具体建造者对象,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。