原型模式


原型模式的应用场景:

1、类在初始化需要消耗非常多的资源,这个资源包括数据、硬件资源等;

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

3、一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用。


[Serializable]public class PrototypeClass{ //浅拷贝 public PrototypeClass ShawllowClone() { return this.MemberwiseClone(); } //深拷贝 public PrototypeClass DeepClone() { using (Stream objectStream = new MemoryStream()) { IFormatter formatter = new BinaryFormatter(); formatter.Serialize(objectStream, this); objectStream.Seek(0, SeekOrigin.Begin); return formatter.Deserialize(objectStream) as PrototypeClass; }}}

深拷贝与浅拷贝根据需要可取其一。

注:通过拷贝所获取到的对象是不会执行构造函数的;


---摘自设计模式之禅