JAVA设计模式之原型模式(Prototype)

JAVA设计模式之原型模式(Prototype)但是,如果对象中的数据需要经过复杂的计算才能得到,或者需要从 RPC、网络、数据库、文件系统等非常慢速的 IO 中读取,这种情况下,我们就可以利

大家好,欢迎来到IT知识分享网。

原型模式(Prototype)

用原型实例指定创建对象的类型,并通过copy这个原型来创建新的对象

读完本文需要花费五分钟

上次我们闲聊了观察者模式(observer pattern),大家还记得怎么不费力气的观察妹子吗?观察者的技能属于一个被动技能,今天我们就上一个主动技能,这个技能主要用来“偷懒”的。

来来,让我们热烈鼓掌欢迎,偷懒大将

原型模式(Prototype Pattern)

创建型大将,技能:对象复制

复制,拷贝大法,这也能算模式?这个问题我思考了很久,终于明白了pattern不是要怎么高端,怎么复杂,其实更注重的是思想,以及在大量应用场景下提炼出来的通用方法给大家省心省力。

原型模式,其实就就解决了一个问题,在new一个对象时,通常要传入很多构造参数,说不定这些构造参数本事也是对象,那你在new一个对象时花的功夫可不少,性能层面也是消耗大大地。

而使用原型模式,就不用那么费力了,直接调用对象的clone()方法,不用关心任何构造参数,呼的一下,立马复制了一个和当前一摸一样的对象。一个相对官方的定义就是:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。

实际上,创建对象包含的申请内存、给成员变量赋值这一过程,本身并不会花费太多时间,或者说对于大部分业务系统来说,这点时间完全是可以忽略的。应用一个复杂的模式,只得到一点点的性能提升,这就是所谓的过度设计,得不偿失。但是,如果对象中的数据需要经过复杂的计算才能得到(比如排序、计算哈希值),或者需要从 RPC、网络、数据库、文件系统等非常慢速的 IO 中读取,这种情况下,我们就可以利用原型模式,从其他已有对象中直接拷贝得到,而不用每次在创建新对象的时候,都重复执行这些耗时的操作。

那原型模式一般在何时使用?

很简单,当你遇到以下场景时,可以考虑使用

  • 对象之间相同或相似,即只是个别的几个属性不同的时候。
  • 创建对象成本较大,例如初始化时间长,占用CPU太多,或者占用网络资源太多等,需要优化资源。
  • 创建一个对象需要繁琐的数据准备或访问权限等,需要提高性能或者提高安全性。
  • 系统中大量使用该类对象,且各个调用者都需要给它的属性重新赋值

好,至此拷贝大法,哦,不,原型模式基本讲完了,接下来,要讲的可是原型模式的高级干货了,简称高干。

啥是高干,就是你知道了后,就能比别人显的更高级,更牛逼,心动不?你身边有个高干,你是不是得另眼相看,巴结巴结。。。

当别人只知道复制,你还能说出个深拷贝,浅拷贝,那么你一定就是那个高干了。

话不多说,用说的不如用画的,一画解万难。。。请待下回分解

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/53986.html

(0)
上一篇 2024-08-02 17:15
下一篇 2024-08-02 20:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信