Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一张图搞定Java原型模式

一张图搞定Java原型模式

作者头像
Tanyboye
发布于 2018-07-02 04:00:39
发布于 2018-07-02 04:00:39
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

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

原型模式(prototype)

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

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

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

原型模式的实现

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

应用场景

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

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

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

深克隆和浅克隆

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

浅克隆和深克隆

测试:

执行结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
设计模式之建造者模式与原型模式
Cloneable接口和clone方法 Prototype模式中实现起来最困难的地方就是内存复制操作,所幸在Java中提供了 clone()方法替我们做了绝大部分事情。
时间静止不是简史
2020/07/24
3550
设计模式之建造者模式与原型模式
设计模式---原型模式
原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。
大忽悠爱学习
2021/11/15
4100
Java原型模式(prototype)
  prototype模式也就是原型模式,是javaGOF23种设计模式中的一种,我们在学习spring的时候在bean标签的学习中碰到过,所以本文来给大家介绍下原型模式
用户4919348
2019/04/02
1.6K0
Java原型模式(prototype)
设计模式 | 原型模式及典型应用
原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。
小旋锋
2019/01/21
3640
23设计模式之 --------- 原型模式
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
默 语
2024/11/20
770
23设计模式之 --------- 原型模式
第22次文章:建造者模式+原型模式
这周我们就可以把GOFO23设计模式中的创建型模式全部介绍完了!后面在项目里面可以试一下啦!
鹏-程-万-里
2019/09/28
4040
一起学习设计模式--05.原型模式
《西游记》中的孙悟空吹猴毛变出很多猴兵的故事想必大家都知道,《火影》中鸣人的多重影分身大部分人应该也是都知道,他们都可以根据自己的形象,复制(又称克隆)出很多和自己一摸一样的“身外身”来。在设计模式中也存在一个类似的模式,可以通过一个原型对象克隆出多个一模一样的对象,该模式被成为原型模式。
独立观察员
2022/12/06
3130
一起学习设计模式--05.原型模式
原型模式
浅克隆(Shallow Clone):当原型对象被复制时,只复制它本身和其中包含的值类型的成员变量,而引用类型的成员变量并没有复制。
千羽
2021/12/29
3790
原型模式
04.原型模式设计思想
本文详细介绍了原型模式的设计思想,包括其定义、应用场景、实现原理及优缺点。通过邮件复制的例子,阐述了原型模式如何通过克隆现有对象来创建新对象,从而提高性能和减少代码复杂度。文章还对比了原型模式与工厂模式的区别,并讨论了深克隆和浅克隆的实现方式。最后,总结了原型模式在特定场景下的应用价值和局限性。
杨充
2024/10/22
1250
设计模式—— 十三 :原型模式
原型模式的核心是一个clone方法,通过该方法进行对象的拷贝,Java 提供了一个Cloneable接口来标示这个对象是可拷贝的,Cloneable接口的作用是标记,在JVM中具有这个标记的对象才有可能被拷贝。那怎么才能从“有可能被拷贝”转换为“可以被拷贝”呢?方法是覆盖 clone()方法:
三分恶
2020/07/16
5810
设计模式(四):创建型之原型模式
冬天vs不冷
2025/01/21
460
设计模式(四):创建型之原型模式
漫谈模式之原型模式
在之前的几篇博文已经介绍了只创建一个实例的单例模式( Singleton ),以及一步步创建复杂对象的建造者模式( Builder )。本文继续来介绍创建型模式的另外一个:原型模式,原型模式(Prototype Pattern)是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而不是使用显式的构造函数来创建新对象。
孟君
2023/03/10
3460
Java进阶篇设计模式之三 ----- 建造者模式和原型模式
在上一篇中我们学习了工厂模式,介绍了简单工厂模式、工厂方法和抽象工厂模式。本篇则介绍设计模式中属于创建型模式的建造者模式和原型模式。
格姗知识圈
2019/07/19
3260
23种设计模式之原型模式
原型模式 定义: 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 主要用于创建对象 原型模式实现只需要实现一个接口 重写clone()方法 。 我们实现中 会有深拷贝和浅拷贝两种情况。 浅克隆 创建一个羊类 作为prototype public class Sheep{ /** * name名字 * creatTime 创建时间 */ private String name; private Date creatTime; pu
暴躁的程序猿
2022/03/23
1890
23种设计模式之原型模式
五分钟 掌握 原型模式
大家好,我是老田,今天我给大家分享设计模式中的原型模式。用贴切的生活故事,以及真实项目场景来讲设计模式,最后用一句话来总结这个设计模式。
田维常
2021/06/09
5460
五分钟 掌握 原型模式
原型模式【原型设计模式】
原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较耗时,如果复制就快了很多。在生活中复制的例子非常多,这里不一一列举了。
高大北
2022/06/14
3450
四、原型模式与建造者模式详解
原型模式(PrototypePattern)是指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,属于创建型模式。
编程之心
2020/08/12
5960
四、原型模式与建造者模式详解
设计模式 ☞ 创新型模式之原型模式
  原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较耗时,如果复制就快了很多。
Demo_Null
2020/12/29
3940
尝试全程都让ChatGPT教我原型模式
为了后续方便转换成思维导图,我需要它回答问题的同时,另外输出一个markdown格式的给我。
灬沙师弟
2023/09/06
2750
尝试全程都让ChatGPT教我原型模式
面向对象设计模式--原型模式详解+实际应用(Java)
原型模式解决从1到N个对象的生成,不负责生成第一个对象实例。原型模式可以通过直接复制内存的方式生成一个新的对象实例,与原有的对象实例的内容都相同,它省去了通过构造函数生成对象实例的步骤,省去了每个属性的赋值逻辑。如果构造函数中没有任何逻辑,则new方法要比clone方法快;但是,只要构造函数中有一点点逻辑,则clone方法就要比new快很多了,而且还没有考虑对象的内部属性进行赋值的逻辑时间。
飞天葫芦侠
2023/03/23
15.4K0
面向对象设计模式--原型模式详解+实际应用(Java)
相关推荐
设计模式之建造者模式与原型模式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验