王海挺学设计模式-原型模式

来源:互联网 发布:ip网络终端 编辑:程序博客网 时间:2024/06/14 00:42

 

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

uml:

 

本质:就是根据一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。

 

原理:在C#里面,我们可以很容易的通过Clone()方法实现原型模式。任何类,只要想支持克隆,必须实现C#中的ICloneable接口。ICloneable接口中有一Clone方法,可以在类中复写实现自定义的克隆方法。克隆的实现方法有两种:浅拷贝(shallow copy)与深拷贝(deep copy)。浅拷贝是指当对象的字段值被拷贝时,字段引用的对象不会被拷贝。例如,如果一个对象有一个指向字符串的字段,并且我们对该对象做了一个浅拷贝,那么两个对象将引用同一个字符串。而深拷贝是对对象实例中字段引用的对象也进行拷贝的一种方式,所以如果一个对象有一个指向字符串的字段,并且我们对该对象做了一个深拷贝的话,我们将创建一个新的对象和一个新的字符串--新对象将引用新字符串。需要注意的是执行深拷贝后,原来的对象和新创建的对象不会共享任何东西;改变一个对象对另外一个对象没有任何影响。


本段来自CSDN博客,转载请标明出处:http://blog.csdn.net/edisundong/archive/2007/07/01/1674275.aspx

 

代码:

 

具体的原型类:

 

客户端代码:

 

 

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

如何事项深度克隆呢?这个大家自己想象吧。有问题联系我 qq 13865488  www.developer-code.com

 

 

 

 

原创粉丝点击