原型模式(Prototype Pattern):指定使用原型实例创建的对象类型,并通过复制此原型创建新对象。
[Serializable]
public class Sheep : ICloneable
{
public string Name { get; set; }
public List<Sheep> Children { get; set; }
public Sheep(string name)
{
this.Name = name;
Children = new List<Sheep>();
}
/// <summary>
/// 通过ICloneable接口实现
/// </summary>
/// <returns></returns>
public object Clone()
{
return new Sheep(Name);
}
/// <summary>
/// MemberwiseClone 实现浅拷贝
/// </summary>
/// <returns></returns>
public Sheep Clone1()
{
return this.MemberwiseClone() as Sheep;
}
/// <summary>
/// 二进制序列化实现深拷贝
/// </summary>
/// <returns></returns>
public Sheep Clone2() {
MemoryStream stream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, this);
stream.Position = 0;
return formatter.Deserialize(stream) as Sheep;
}
}
深拷贝 浅拷贝 源码地址
其他设计模式