原型模式比喻
跟女朋友用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype-原型模式了。
原型模式意图
原型模式(Prototype)用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
原型模式类图
原型模型实现
/// <summary>
/// 我的某一句情话
/// .Net提供了IClone接口,其中有一个唯一的方法Clone(),子类只需要实现这个接口就可以实现原型模式
/// </summary>
class Lover : ICloneable
{
private String strLover;//情话
public String StrLover
{
get { return strLover; }
set { strLover = value; }
}
/// <summary>
/// 实现ICloneable接口方法,实现原型模式
/// </summary>
/// <returns></returns>
public object Clone()
{
//创建当前对象的浅表副本。
//创建一个新对象,然后将当前对象的非静态字段复制到该对象。
//如果字段是值类型,则对该字段执行逐位复制。
//如果字段是引用类型,则复制引用不复制引用的对象。
return this.MemberwiseClone();
}
}
/// <summary>
/// 原型模式客户端应用
/// </summary>
class Program
{
static void Main(string[] args)
{
Lover lover = new Lover();
lover.StrLover = "我爱你,朱利IT博客 www.zhuli8.com !";
Console.WriteLine(lover.StrLover);
//我的情话你也想用!
Lover l = lover.Clone() as Lover;//原型模式中利用对象lover得到新的实例l
Console.WriteLine(l.StrLover);
Console.Read();
}
}
只要每一个原型类继承ICloneable配备一个克隆方法,我的情话你一样可以用!