一、定义
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
二、通用类图
原型模式的核心是clone方法,通过 调用该方法进行对象的克隆/拷贝。在Java中提供了一个Cloneable接口来标示这个对象是可以拷贝的。Cloneable接口中没有一个方法,只起到标示作用,只需要重写Object类中的clone()方法即可拷贝该对象。
三、通用代码
public class Prototype implements Cloneable {
@Override
protected Object clone() throws CloneNotSupportedException {
Prototype prototype = (Prototype) super.clone();
return prototype;
}
}
这样就完成了原型模式。
四、原型模式的优点
1:性能优良
2:逃避构造函数的约束(在调用clone()方法时是直接在内存中拷贝,不经过构造器)
五、注意点
1:使用原型模式时,引用类型的成员变量必须满足两个条件才不会被拷贝:一是类的成员变量,而不是方法内变量(static);二是必须是一个可变的应用对象,而不是一个原始类型或不可变类型。(基本类型及原始类型都会被拷贝,String是不可变的)