首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计模式之小弟我见-6 原型模式

2012-07-22 
设计模式之我见--6 原型模式原型模式用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。  P

设计模式之我见--6 原型模式

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

Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。

当有一个对象内部的构建细节非常复杂,而且我们还经常使用多个此类的实例对象,如果每次都需要充新去创建,那样也会很影响性能。

下面用一个例子介绍一下,我们需要制作份简历,每一份简历的构造过程都很相似,只是会有一些具体的地方需要修改(比如某一份简历是针对某一个公司的,一般不需要修改),这样我们就可以先创建一份简历,然后再使用这份简历复制出两份。这样省去了我们每次都创建简历实例的麻烦,也避免了我们犯错误,如果我们的简历有一个地方写错,我们如果使用土办法,创建三个实例,那么都得修改,如果我们使用原型模式,只需要把原型的错误修改了,其他的不用改变。

下面看一下代码:



在这个例子中,只是提供了一种制作简历的方法,原型模式更加适用的如下的情况:

本来这里是一张类图图片,但是不着调为什么就是不能上传成功。图片内容是,有一个简历接口,有一个Clone方法,然后有一个普通简历类和一个视频简历类分别继承了这个接口。

这样我们可以创建不同的简历。

使用原型模式还应该注意一个问题,深复制和浅复制。如果我们在简历加上了一个工作经历,而这个工作经历使用另一个类的实例,这样如果浅复制的时候就会是同一个对象的引用,这样我们修改一个对象的工作经历时候,所有的对象的工作经历都会影响,这时候就应该使用深复制了。在使用原型模式一定要处理好这个问题,否则会产生意想不到的麻烦。


热点排行