目录
什么是原型模式
原型模式指的是用一个对象作为原型模板,来创建其他新的对象
为什么要用原型模式
当我们需要创建对象时,可以new一个对象。但是重新创建一个新对象是非常耗费资源的,尤其是当这个对象需要准备的资源比较多时。那这个时候有没有其他好的办法呢。如果有一个模板类的对象,当需要创建一个新的对象时,能基于这个模板对象快速复制出来一个新对象,然后在新对象上只需做少量修改。
这就是原型模式。而这个模板对象只需要实现Cloneable接口
原型模式组成
原型模式类
public class PrototypeClass implements Cloneable {
@Override
protected PrototypeClass clone() {
PrototypeClass prototypeClass = null;
try {
prototypeClass = (PrototypeClass) super.clone();
} catch (CloneNotSupportedException e) {
//TODO
}
return prototypeClass;
}
}
测试驱动
public class Main {
public static void main(String[] args) {
PrototypeClass prototypeClass = new PrototypeClass();
PrototypeClass clone = prototypeClass.clone();
}
}
需要注意的几点
原型模式clone是通过堆内的二进制流直接拷贝,所以对象的构造方法不会执行
另外,拷贝时只做浅拷贝,即只拷贝对象本身,而对于对象内的成员变量(只限引用对象和数组)只引用原变量本身的地址。