原型模式(Prototype Pattern
)
意图
用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。
动机
系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就更高效。
适用性
原型模式通常适用于以下场景:
- 对象之间相同或相似,即只是个别的几个属性不同的时候。
- 对象的创建过程比较麻烦,但复制比较简单的时候。
结构

实现
描述实现模式时使用的技巧,及需要面对的问题。
已知应用
public class ConcretePrototype implements Cloneable {
public ConcretePrototype() {
System.out.println("创建具体原型。。。");
}
public Object clone() throws CloneNotSupportedException {
System.out.println("复制具体原型。。。");
// 父类Object.clone()的浅拷贝
return (ConcretePrototype) super.clone();
}
}
public class TestPrototype {
public static void main(String[] args) throws CloneNotSupportedException {
ConcretePrototype prototype = new ConcretePrototype();
ConcretePrototype clone = (ConcretePrototype) prototype.clone();
System.out.println("原型和拷贝对象引用是否相同:" + (prototype == clone));
}
}
相关模式
参考资料
- 《
Head First
设计模式》 - 图说设计模式
- Java设计模式:23种设计模式全面解析(超级详细)