美文网首页
创建性模式-原型模式

创建性模式-原型模式

作者: 查无此人_chazz | 来源:发表于2018-05-13 15:36 被阅读0次

    标签(空格分隔): 原型模式 浅克隆 深克隆


    原型模式: 从一个对象再创建另外一个可定制的对象,且不需要知道任何创建的细节。即能实现对象克隆。

    java中提供了对象克隆的原生支持:
    在java中,有一个Cloneable接口,它的作用是声明克隆的能力, 一个类只有实现它才可以被拷贝,然后重写clone(),否则在运行时会抛出CloneNotSupportedException异常
    优点: 简化对象的创建过程,隐藏了对象创建的细节,又对性能大大的提高


    深克隆&浅克隆

    ⑴浅克隆
    被克隆对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅克隆仅仅克隆当前被克隆的对象,而与它所引用的对象没有关系。

    ⑵深克隆
    被克隆对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被克隆过的新对象,而不再是原有的那些被引用的对象。换言之,深克隆把要克隆的对象所引用的对象都克隆了一遍。


    实现方法
    1、在java中,Object中的clone()方法是一个native方法,Cloneable接口仅是一个标记性接口,用来通知jvm这个对象可以调用clone方法,而且Object的clone()方法仅仅实现是浅克隆,若要实现深克隆则需要重写Object.clone()。
    2、 Apache Commons 提供了相关的克隆组件和方法

    SerializationUtils.clone(object);//返回深复制后的结果
    
    • 浅克隆/拷贝(shallow clone/copy):BeanUtils
    BeanUtils.cloneObject(object);//返回浅复制的结果
    

    相关文章

      网友评论

          本文标题:创建性模式-原型模式

          本文链接:https://www.haomeiwen.com/subject/vbjldftx.html