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

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是两个对象

现在再回头看原型横式的定义就很透彻了,说直白点,原型模式就是以一个对象为原型,通过拷贝这个原型复制新的对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值