您的位置:首页 > 编程语言 > Java开发

JAVA设计模式是个什么玩意儿_05_原型模式

2016-11-09 08:57 483 查看

1. 定义

用原型实例对象指定创建对象的种类,并通过拷贝这些原型创建新的对象。—— 摘自《研磨设计模式》陈臣、王斌

原型模式,英文名Prototype,在java里原型模式是比较简单的,java里的浅复制和深复制都是原型模式的应用,浅复制和深复制也叫浅克隆和深克隆。

2. java里的复制方法

Java的所有类都是从java.lang.Object类继承而来的,而Object类提供protected Object clone()方法对对象进行复制。Java语言提供的Cloneable接口只起一个作用,就是在运行时期通知Java虚拟机可以安全地在这个类上使用clone()方法。通过调用这个clone()方法可以得到一个对象的复制。由于Object类本身并不实现Cloneable接口,因此如果所考虑的类没有实现Cloneable接口时,调用clone()方法会抛出CloneNotSupportedException异常。

关于浅复制和深复制的区别,在我本人的另一篇博文里说过了,并且用代码举了例子,地址:http://blog.csdn.net/onezg/article/details/52891938

3. 原型模式代码举例

public class Student implements Cloneable {

private int studentNumber; //学号
private String name; //姓名

//这里省略了构造方法和setters/getters

//这里一定要public修饰,不要沿用Cloneable接口的protected
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}


public static void main(String[] args) throws CloneNotSupportedException {
Student s1 = new Student(1, "onezg");
Student s2 = (Student)s1.clone();

s2.setName("alexander");
System.out.println(s1.getName());
}


输出结果:onezg

原因:复制后s1和s2是两个对象

现在再回头看原型横式的定义就很透彻了,说直白点,原型模式就是以一个对象为原型,通过拷贝这个原型复制新的对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息