原型模式是创建型模式的一种,通过克隆原型实例以创建新的对象。
原型模式不需调用构造方法创建对象,与单例模式冲突。
使用原型模式需明晰以下三点:
1. clone()是Object类的一个protected方法。
2. 若一个类实现了Cloneable接口,则支持在原有实例的基础上clone新的实例。
3. Object的clone操作只克隆基本数据类型(浅拷贝),其它容器类数据按需求自行执行clone(深拷贝)。
public class Prototype implements Cloneable {
private ArrayList list = new ArrayList();
//重写clone()方法,将作用域从protected扩展为public
public Prototype clone() {
Prototype prototype;
try {
//克隆实例及其基本数据类型
prototype = (Prototype) super.clone();
//容器类大多实现了Cloneable接口,按需自行clone
prototype.list = (ArrayList) list.clone();
return prototype;
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return null;
}
}