原型模式(Prototype Pattern)是用于创建重复的对象,用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。

背景

  1. 无法通过外部拷贝得到的对象,使用原型模式创建

实现

原型模式的克隆分为浅克隆和深克隆。

**浅克隆:**创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。

**深克隆:**创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址。

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());
    }
}