文档章节

小菜学设计模式——原型模式

learn_more
 learn_more
发布于 2015/06/08 13:24
字数 595
阅读 184
收藏 6

背景

    有时候你会发现其实引用类型也是很不让人喜欢的,因为某些时候,你可能需要两个相同的引用对象,一个用来备份,一个用来继续操作,但是继续操作那个不能影响到我备份那个,这个时候麻烦就来了,两个引用如果指向同一个内存空间的对象,那么修改其中一个,另一个肯定会发生变化。

1、使用意图

    不用重新初始化对象,而是动态的获得对象运行时的状态。

2、生活实例

    建立复印的过程就是一个原型模式,可以对某个区域进行针对性修改,然后拿修改过后的资料继续复印!

3、Java 例子(框架、JDK 、JEE)

    不清楚哪里,如果有人知道可以补充

4、模式类图

5、模式优点

    原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

    原型模式其实就是一个从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。

    一般在初始化的信息不发生变化的情况下克隆是最好的办法,克隆既隐藏了对象创建的细节,有对性能是大大提高。

    不用重新初始化对象,而是动态的获得对象运行时的状态。

    原型模式使用克隆肯定会牵扯到深复制和浅复制,Java中实现复制直接代用clone方法,但是那是浅复制,真正采用深复制还需要实现Serializable接口,或者,对对象类型的数据进行深度深度clone。

6、与类似模式比较

    感觉原型模式用的很少,因为他是一个对象数据的备份利用,我们定义一个类的时候经常会给他的某些成员变量进行初始化,不知道这样子new出的对象是不是就和原型模式是一样的道理呢?呵呵..........


© 著作权归作者所有

共有 人打赏支持
learn_more
粉丝 92
博文 240
码字总数 210196
作品 0
深圳
程序员
私信 提问
迈向大牛的重要一步——掌握设计模式

IT职场的小菜经常有这样的疑问: 为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝;而自己加班加点搞到天亮还做不完。 为什么用户提出需求变更后,大牛只需潇洒地敲敲键...

一枚Sir
2015/04/10
0
0
小菜学设计模式——设计模式总结之创建型

1、面向过程与面向对象 1)面向过程通过划分功能模块,通过函数间相互调用来实现,但需求变化时就需要更改函数,而你改动的函数有多少地方在调用她呢?关联多少数据,这是很不容易弄得清楚地...

learn_more
2015/07/05
0
0
小菜学设计模式——设计模式总结之结构型

1、设计模式总结 设计模式总共23个,但是常用的不到10个,下面就把这23个设计模式进行整理归类,具体如下: 1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型...

learn_more
2015/07/06
0
0
Spring框架中的设计模式(三)

Spring框架中的设计模式(三) 原创: 瑞查德-Jack 在之前的两篇文章中,我们看到了一些在Spring框架中实现的设计模式。这一次我们会发现这个流行框架使用的3种新模式。 本文将从描述两个创意...

瑞查德-Jack
07/19
0
0
JavaScript设计模式入坑

JavaScript设计模式入坑 介绍 设计模式编写易于维护的代码。 设计模式的开创者是一位土木工程师。Σ( ° △ °|||)︴,写代码就是盖房子。 模式 模式一种可以复用的解决方案。解决软件设计中...

小小小8021
10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里云建站

阿里云自营建站 没想到阿里云已经切入这块市场了。可以用拖动的方式来建站的模式,真的还是6.

miaojiangmin
29分钟前
2
0
linux系统top命令:virt,res,shr详解

VIRT:virtual memory usage 虚拟内存 1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等 2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用...

刘祖鹏
36分钟前
2
0
day154-2018-11-21-英语流利阅读-待学习

快手网红发明家:百万粉丝 vs 零销量 雪梨 2018-11-21 1.今日导读 “我做了一个‘雷神锤’的斜挎包,你看这里可以打开,里面可以装手机、卫生纸、钱包,觉得轻的话可以放一些砖头。咱们把它背...

飞鱼说编程
42分钟前
10
0
图灵奖得主华人高徒发布AI芯片!64位RISC-V、高度可编程,低功耗

作为RISC-V架构下的旗手玩家,睿思芯科自然希望通过产品展现出RISC-V可编程架构的巨大潜力。 https://mbd.baidu.com/newspage/data/landingshare?context=%7B%22nid%22:%22news_917924603675...

whoisliang
43分钟前
5
0
xcode 10 缺少 libstdc++6.0.9 解决方案

image.png 本方案基于xcode10正式版操作,其它版本请自行验证! 苹果在XCode10中移除了libstdc++(libstdc++.6、libstdc++6.0.9)库。 项目解决方法:删除libstdc++(libstdc++.6、libstdc++6....

壹峰
47分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部