定义:
如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段相同),这种情况下,我们可以利用已有对象(原型)进行复制(或者叫拷贝)的方式,创建一个或多个相同或相似的对象,以达到节省资源的目的,这种基于原型来创建对象的方式就叫做原型模式。用这种方式创建对象也不用知道对象创建的细节,比较高效。
功能:
通过克隆来创建新的对象实例为克隆出来的对象实例复制原型实例属性的值
本质:
通过克隆来创建新的对象实例
2、组成结构Java 提供了对象的 clone() 方法,使用 Java 实现原型模式还是比较简单的
原型模式包含以下角色
Prototype 抽象原型类:声明了一个克隆自身的接口,约束想要克隆自己的类Realizetype 具体原型类:实现 Prototype 接口的类,它是可以被复制的对象,实现了克隆自身的功能访问类:首先获取到原型实例对象,然后通过原型实例克隆自身来创建新的对象实例
原型模式有两种实现方法,深拷贝和浅拷贝。
浅拷贝:只复制对象中基本数据类型数据和引用对象的内存地址,不会递归地复制引用对象,以及引用对象的引用对象深拷贝:得到的是一份完完全全独立的对象。
简单实现:
// 声明一个抽象原型类,克隆自身的接口
public interface Prototype {
public Prototype clone();
}
// 具体实现类
public class Realizetype implements Prototype {
public Prototype clone() {
// 最简单的克隆,创建一个自身对象,没有属性就不赋值了
Prototype prototype = new Realizetype();
return prototype;
}
}
// 访问类
public class ProtypeTest {
private Prototype prototype;
// 此处可以传入想要创建的 Prototype 类型
public ProtypeTest(Prototype prototype) {
this.prototype = prototype;
}
public void operation() {
// 会需要创建原型接口的对象,可以自行操作
Prototype newPrototype = prototype.clone();
}
}



