原型模式其实就是实现对象的拷贝。可是对象的拷贝分为深拷贝和浅拷贝。
任何对象都有从Object继承过来的clone方法,默认是浅拷贝的,即拷贝时只会复制基本数据类型(包括字符串String),并且要注意拷贝的时候是不会调用构造方法的。而引用类型只是复制了引用,因此拷贝出来的对象和原来对象有着同样的引用属性,这样在某种环境下会出问题。 对于私有属性,应该是只属于该对象的,和其他对象无关,而浅拷贝之后两个对象有着同一个引用的私有属性,那么这个私有的意义何在?
因此,在重写父类的 clone方法时要注意同时把引用属性也重新复制一份,赋给拷贝后的对象。