Skip to content

Latest commit

 

History

History
28 lines (20 loc) · 1.11 KB

File metadata and controls

28 lines (20 loc) · 1.11 KB

本文来自廖雪峰,郎涯进行简单排版与补充

原型模式即Prototype,是根据一个现有对象实例复制出一个新的实例,复制出的类型和属性与原实例相同。

对于普通类,我们如何实现原型拷贝?Java的Object提供了一个clone()方法,它的意图就是复制一个新的对象出来,我们需要实现一个Cloneable接口来标识一个对象是“可复制”的:

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

    // 复制新对象并返回:
    public Object clone() {
        Student std = new Student();
        std.id = this.id;
        std.name = this.name;
        std.score = this.score;
        return std;
    }
}

实际上,使用原型模式更好的方式是定义一个copy()方法,返回明确的类型(否则需要强制类型转换)

原型模式应用不是很广泛,因为很多实例会持有类似文件、Socket这样的资源,而这些资源是无法复制给另一个对象共享的,只有存储简单类型的“值”对象可以复制。