设计模式之原型模式的理解

导读:本篇文章讲解 设计模式之原型模式的理解,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

设计模式之原型模式的理解

基本介绍
原型模式是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象
原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节
工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实例创建,即 对象.clone()

浅拷贝

1,对于数据类型是基本数据类型的成员变量,浅拷贝会直接进行值传递,也就是将该属性的值复制一份给新的对象
2,对于数据类型是引用数据类型的成员变量,比如说成员变量是某个数组,某个类的对象等,那么浅拷贝,会进行引用传递,也就是只是将该成员变量的引用值(内存地址)复制一份给新的对象,因为实际上两个对象的该成员都指向同一个实例,在这种情况下,在一个对象中修改该成员变量会影响到另外一个对象的该成员变量值
在这里插入图片描述
在这里插入图片描述

深拷贝

1,复制对象的所有基本数据类型的成员变量值
2,为所有引用数据类型的成员变量申请存储空间,并复制每个引用数据类型成员变量所引用的对象,直接该对象可达的所有对象,也就是说,对象进行深拷贝要对整个对象进行拷贝

实现一
通过在clone方法中调用引用类型的clone方法进行克隆 缺点:如果有多个引用类型需要多次调用被引用的clone方法
在这里插入图片描述在这里插入图片描述
实现二
通过字节流和反序序列化拷贝对象,优点:它会把当前整个类进行序列化,进行输出,通过反序列化进行读取后,可以将当多个引用类型进行拷贝
在这里插入图片描述

原型模式注意的事项

1,创建新的对象比较复杂时,可以利用原型模式简化对象的创建过程,同时也能够提高效率
2,不用重新初始化对象,而是动态得对象运行时得状态
3,如果原始对象发生变化(增加或者减少属性)其他克隆对象也会发生相应得变化无需修改代码
4,在现实深克隆得时候可能需要比较复杂的代码
5,缺点:需要为每一个类配备一个克隆方法,这对全新的类来说不是很难,但对已有的类进行改造时,需要修改其代码,违背了ocp原则

学习来源:B站韩顺平

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/112565.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!