原型模式(Prototype Pattern)是用于创建重复的对象,用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。
原型模式的克隆分为浅克隆和深克隆。
**浅克隆:**创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。
**深克隆:**创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址。
Java中的Object类中提供了 clone()
方法来实现浅克隆。
通过实现Cloneable 接口可以完成原型模式
class Plane implements Cloneable {
private String name;
public Plane() {
this.name = "Name: " + Math.random();
}
public String getName() {
return name;
}
@Override
protected Plane clone() throws CloneNotSupportedException {
return (Plane) super.clone();
}
}
public class prototypePattern {
public static void main(String[] args) throws CloneNotSupportedException {
Plane p1 = new Plane();
Plane p2 = p1.clone();
System.out.println(p1.getName());
System.out.println(p2.getName());
}
}