原型模式:允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
运行结果:
//孙悟空原型
MonkeyKingPrototype prototypeMonkeyKing = new ConctetePrototype("MonkeyKing");
//变一个
MonkeyKingPrototype cloneMonkeyKing = prototypeMonkeyKing.Clone();
Console.WriteLine("Cloned1:\t"+cloneMonkeyKing.Id);
//变两个
MonkeyKingPrototype cloneMonkeyKing2 = prototypeMonkeyKing.Clone();
Console.WriteLine("Cloned2:\t"+cloneMonkeyKing2.Id);
Console.ReadKey();
}
}
/// <summary>
/// 孙悟空原型
/// </summary>
public abstract class MonkeyKingPrototype
{
public string Id { set; get; }
public MonkeyKingPrototype(string id)
{
this.Id = id;
}
//克隆方法
public abstract MonkeyKingPrototype Clone();
}
public class ConctetePrototype : MonkeyKingPrototype
{
public ConctetePrototype(string id)
: base(id)
{ }
/// <summary>
/// 浅拷贝
/// </summary>
/// <returns></returns>
public override MonkeyKingPrototype Clone()
{
//调用MemberwiseClone方法实现的是浅拷贝,另外还有深拷贝
return (MonkeyKingPrototype)this.MemberwiseClone();
}
}