原型模式也是一种建立模式,它主要经过复制一个对象来建立一个新的对象。 原型类须要知足两个条件:java
Cloneable
接口,只有实现了这个接口的类才能被拷贝,不然会抛出CloneNotSupportedException
异常。Object
类中的clone
方法,由于Object
类中的clone
方法是protect
,所以原型类须要重写,将clone
方法改成public
。以下:ide
public class ProtoType implements Cloneable {
public void show() {
System.out.println("hahaha");
}
@Override
protected ProtoType clone() {
ProtoType protoType = null;
try {
protoType = (ProtoType)super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return protoType;
}
}
复制代码
客户端调用spa
public class Main {
public static void main(String[] args) {
ProtoType protoType = new ProtoType();
ProtoType clone = protoType.clone();
clone.show();
}
}
复制代码
protected native Object clone() throws CloneNotSupportedException;
复制代码
Object
类中的clone
方法是一个native方法,直接操做内存中的二进制流,因此在构建复杂大对象的时候,会比new一个对象快。code
Object
中的clone
方法是浅拷贝,若是想要实现深拷贝,须要本身实现。 最简单的深拷贝方式直接序列化,而后反序列化。