查看原文
其他

一张图搞定Java原型模式

关注Java就该这么学带你全面认识Java
Java就该这么学后台回复 1024 有特别礼包

责编:Java就该这么学 | 来源:秦始皇

链接:baijiahao.baidu.com

上一篇精彩:Java8 判空新写法!
大家好,我是Java就该这么学。

原型模式(prototype)

通过new产生一个对象需要非常繁琐的数据准备货访问权限,则可以使用原型模式。

原型模式的本质是Java中的克隆技术,以某个对象为原型,复制出新的对象。

通过原型模式创建的克隆对象属性值完全和原型对象相同,并且克隆出的信对象不会改变影响原型对象。

原型模式的实现

  • Cloneable接口和clone方法。

  • 序列化和反序列化实现clone。

应用场景

java语言中,继承用到了该模式。

原型模式一般和工厂方法模式一起出现,通过clone的方法创建一个工厂,然后由工厂方法提供给调用者。

Spring 中的bean的创建实际就是两种:单例模式和原型模式。

深克隆和浅克隆

Object 的clone()方法实现的是浅克隆,要实现深克隆需要重写clone()方法,在该方法中对属性中的引用对象也进行克隆。另外,搜索公众号Linux就该这样学后台回复“git书籍”,获取一份惊喜礼包。

浅克隆和深克隆

测试:

执行结果:

com.hh.prototype.Sheep@2a139a55

com.hh.prototype.Sheep@15db9742

Sun Mar 21 08:20:34 CST 26579

结果说明:

通过直接调用Object的clone()方法,创建了2个不同的对象,但是修改其中一个对象的属性的时候,另一个对象的属性也发生了改变。

Thu Jan 01 08:20:34 CST 1970 //s2的date没有发生改变

原型模式构建对象和 new 对象效率比较

采用原型模式创建对象200次耗时:0

采用new创建对象200次耗时:2057

所以,通过原型模式创建对象,可以大大提高创建的效率,直接克隆,避免了重新执行构造过程。原型模式和工厂模式搭配起来,是常用的使用方式。

欢迎有需要的同学试试,如果本文对您有帮助,也请帮忙点个 赞 + 在看 啦!❤️

在 GitHub猿 还有更多优质项目系统学习资源,欢迎分享给其他同学吧!



公众号后台回复 Java 或者 面试 有惊喜礼包!Java就该这么学交流群

 「Java就该这么学」建立了读者Java交流群,大家可以添加小编微信进行加群。欢迎有想法、乐于分享的朋友们一起交流学习。

扫描添加好友邀你进Java群,加我时注明姓名+公司+职位】


版权申明:内容来源网络,版权归原作者所有。如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。

往日文章:

想了解Java后端学习路线?看完这篇就够了!
2天3夜开发了一个商城系统,用它挣了10.7万!
SQL优化万能公式:5 大步骤 + 10 个案例
Nginx 面试 40 连问,快顶不住了~~
面试官:如果要存 ip 地址,用什么数据类型比较好
这是我见过最好的监控系统!
SpringBoot 接口数据加解密实战
程序员坐牢了,会被安排写代码吗?
大公司为什么禁止SpringBoot项目使用Tomcat?
HTTP/3 发布!
SQL 优化这么做就对了!
请立即卸载这款 IDEA 插件!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存