原型模式
Posted zqq_hello_world
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原型模式相关的知识,希望对你有一定的参考价值。
原型模式的定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象
用Object类的克隆clone()方法实现原型模式。需要实现Cloneable 接口(Cloneable 克隆标记接口)。
- 浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。Object类自带的克隆属于潜克隆。
- 深克隆:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址
public class Prototype implements Cloneable{
private String name;
public Prototype(){
this.name = "Prototype";
System.out.println("Prototype创建成功");
}
/**
* 浅克隆
* Object默认的是浅克隆
* @return
* @throws CloneNotSupportedException
*/
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
public String getName(){
return this.name;
}
public static void main(String[] args) throws Exception {
Prototype p = new Prototype();
Prototype p1 = (Prototype)p.clone();
//属性复制
System.out.println(p.getName() + "======" + p1.getName());
//创建出了一个新的对象
System.out.println(p == p1);
}
}
原型模式优点
- Java自带的原型模式基于内存二进制流的复制,在性能上比直接 new 一个对象更加优良。
- 可以使用深克隆方式保存对象的状态,使用原型模式将对象复制一份,并将其状态保存起来,简化了创建对象的过程,以便在需要的时候使用(例如恢复到历史某一状态),可辅助实现撤销操作。
以上是关于原型模式的主要内容,如果未能解决你的问题,请参考以下文章