设计模式(5)-- 原型

1. 写在前面

上一小节中我们学习了 生成器 。其实很简单,就是 一步一步的去组装对象。
就像我们常用的 @Builder 注解一样,该注解就是 生成器 的一个封装实现的方法。


2. 原型

这一小节我们学习一下原型。
所谓 原型(Prototype),就是用已经存在的实例原型,来创建新的对象。

// 原型:
String[] original = { "Apple", "Pear", "Banana" };
// 新对象:
String[] copy = Arrays.copyOf(original, original.length);

3. deep copy

原型的模式,其实刚好跟我们之前看过的深拷贝的模式一致。
我们通过 实现 Clonable接口,重写 clone() 方法,既可以通过 deep copy 实现原型的创建模式。

一般来说我们 clone() 方法会返回 Object 对象,所以要强制转型一下。

更一般的 ,我们直接定义一个 copy() 方法,返回对应的类型

其实 clone() 方法也可以指定返回类型

public class Student {
    private int id;
    private String name;
    private int score;

    public Student copy() {
        Student std = new Student();
        std.id = this.id;
        std.name = this.name;
        std.score = this.score;
        return std;
    }
}

你可能感兴趣的:(设计模式(5)-- 原型)