• 设计模式之原型模式


    用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

    原型模式的核心是clone方法,通过该方法进行对象的拷贝,java提供了一个Cloneable接口来标示这个对象是可拷贝的。

    Prototype原型类:声明一个克隆自己的接口

    ConcretePrototype具体的原型类:实现一个克隆自己的操作

    Client: 让一个原型对象克隆自己,从而创建一个新的对象(属性一样)

    浅拷贝:

    默认是使用 protected Object clone()方法实现。

    对于数据类型是基本数据类型的成员变量,浅拷贝会直接进行值传递,也就是将该属性值复制一份给新的对象。

    对于数据类型是引用数据类型的成员变量,比如说成员变量是某个数组、某个类的对象等,那么浅拷贝会进行引用传递,也就是只是将该成员变量的引用值(内存地址)复制一份给新的对象。

    深拷贝:

    对于数据类型是基本数据类型的成员变量,深拷贝会复制基本数据类型的成员变量值

    对于数据类型是引用数据类型的成员变量,深拷贝会申请存储空间,并复制每个引用数据类型成员变量所引用的对象,直到该对象可达所有对象。

    1、重写clone()方法实现深拷贝

    2、通过对象序列化实现深拷贝

    特点:

    创建新的对象比较复杂时,可以利用原型模式简化对象的创建过程,同时也能够提高效率

    如果原始对象发生变化(增加或者减少属性),其它克隆对象的也会发生相应的变化无需修改代码

     

  • 相关阅读:
    python while循环语句
    Python if条件语句
    推荐一款java的验证码组件——kaptcha
    Linux硬链接和符号链接(转)
    推荐一款好用的java反编译软件——JavaDecompiler
    数据库性能优化之冗余字段的作用
    通过设置代理,解决服务器禁止抓取,报“java.io.IOException: Server returned HTTP response code: 403 for URL”错误的方法
    浏览器在同域名下有并发加载的限制
    XCODE快捷键和功能汇总篇(不断更新)
    队列应用场景,自己实现队列
  • 原文地址:https://www.cnblogs.com/wjh123/p/11335709.html
Copyright © 2020-2023  润新知