原型模式属于对象创建模式,原型模式的主要特点是对象可以自己创建一份自身的拷贝。而且避免了工厂模式造成的固定等级。
原型模式创造出的对象拷贝与原有对象存在以下关系。
1、原对象 != 新对象拷贝
2、原对象.equals(新对象拷贝) = true(前提是添加了适当的equals方法)
3、原对象.getClass().equals(新对象拷贝.getClass())
一个简单原型模式的例子如下
以上样例使用浅克隆方式实现proto type模式,浅克隆无法对对象中包含的其他非java原是类型数据进行复制。如果需要复制其他非java原是类型数据,则需要使用深克隆方式,对象以及其内部所有对象必须实现java.io.Serializable接口,clone方法改写成以下形式: