原型模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象;复制过程可分为浅复制和深复制。
浅复制是指直接调用父类(即Object类)的clone方法(super.clone()),该方法是本地(native)方法,调用该方法clone出来的新对象,基本数据类型的属性变量是新创建的,在不同的堆内存中,但是新对象的引用类型属性变量则和原对象保持一致,指向相同的引用类型对象的地址;
深复制是指新创建出来的对象,它的基本数据类型的属性变量和引用类型的属性变量都是全新的,即引用类型的变量指向的对象,也会新创建一份,然后该原型对象指向它。深复制主要通过对象流的形式,先将原对象写入二进制对象流中,然后再读出该对象流,获取的便是深复制的一份全新的对象流。