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是两个对象
现在再回头看原型横式的定义就很透彻了,说直白点,原型模式就是以一个对象为原型,通过拷贝这个原型复制新的对象。
相关文章推荐
- JAVA设计模式是个什么玩意儿_01_工厂方法模式
- java 23种设计模式 05 原型模式
- JAVA设计模式是个什么玩意儿_02_抽象工厂模式
- Java常用的设计模式05:常用设计模式之原型模式(创建型模式)
- JAVA设计模式(05):创建型-原型模式(Prototype)
- JAVA设计模式是个什么玩意儿
- 设计模式(Design Patterns)-可复用面向对象软件的基础 05:原型模式(Prototype)和Java中的深、浅拷贝
- JAVA设计模式-05-原型模式
- JAVA设计模式是个什么玩意儿_03_单例模式
- JAVA设计模式是个什么玩意儿_04_建造者模式
- JAVA设计模式是个什么玩意儿_00_工厂模式家族准备篇_简单工厂模式
- JAVA设计模式(05):创建型-原型模式(Prototype)
- Java与设计模式(05)--原型模式
- JAVA设计模式(05):创建型-原型模式(Prototype)
- JAVA设计模式 — 原型模式(Prototype)
- java设计模式--代理及其动态代理--05
- java常用的设计模式有那些,各有什么优缺点?
- Java设计模式 创建模式-原型模式(Prototype)
- 设计模式(五)----- 原型模式(Prototype)----(JAVA版)
- Java设计模式:原型模式