本文来自廖雪峰,郎涯进行简单排版与补充
原型模式即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这样的资源,而这些资源是无法复制给另一个对象共享的,只有存储简单类型的“值”对象可以复制。