原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
浅复制:复制引用但不复制引用的对象,原始对象及其副本引用同一对象
//说明:MemberwiseClone()方法是这样的,如果字段是值类型的,则对该字段执行逐位复制,如果字段是引用类型,则
//复制引用但不复制引用的对象:因此,原始对象及其复本引用同一对象。这就是浅复制
class Resume : ICloneable
{
private string name;
private string sex;
private string age;
private string timeArea;
private string company;
public Resume(string name)
{
this.name = name;
}
public void SetPersonalInfo(string sex, string age)
{
this.sex = sex;
this.age = age;
}
public void SetWorkExperience(string timeArea, string company)
{
this.timeArea = timeArea;
this.company = company;
}
public void Display()
{
Console.WriteLine("{0} {1} {2}",name,sex,age);
Console.WriteLine("工作经历:{0} {1}",timeArea,company);
}
public object Clone()
{
return (Object) this.MemberwiseClone();
}
}
/// <summary>
/// 程序主体
/// </summary>
class Program
{
static void Main(string[] args)
{
var a = new Resume("大鸟");
a.SetPersonalInfo("男","29");
a.SetWorkExperience("1999-2000","XX公司");
var b = (Resume)a.Clone();
b.SetWorkExperience("1998-2005","YY公司");
var c = (Resume) a.Clone();
c.SetPersonalInfo("男","24");
a.Display();
b.Display();
c.Display();
Console.Read();
}
}
运行结果: