前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一张图搞定Java原型模式

一张图搞定Java原型模式

作者头像
Tanyboye
发布2018-07-02 12:00:39
1.1K0
发布2018-07-02 12:00:39
举报

作者:秦始皇 来源:baijiahao.baidu.com

原型模式(prototype)

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

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

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

原型模式的实现

  • Cloneable接口和clone方法。
  • 序列化和反序列化实现clone。

应用场景

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

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

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

深克隆和浅克隆

Object 的clone()方法实现的是浅克隆,要实现深克隆需要重写clone()方法,在该方法中对属性中的引用对象也进行克隆。

浅克隆和深克隆

测试:

执行结果:

代码语言:javascript
复制
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

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

另外,最近新建了一个微信交流学习群,想要进入的小伙伴可以在后台加一下。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java技术学习之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原型模式(prototype)
  • 原型模式的实现
  • 应用场景
  • 深克隆和浅克隆
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档