1. 原型模式

  1. 浅复制
// 工作经历
class WorkExperience
{
	private string workDate;
	public string WorkDate
	{
		get{ return workDate; }
		set{ workDate = value; }
	}
	private string company;
	public string Company
	{
		get { return company; }
		set { company = value; }
	}
} 
// 简历
class Resume: ICloneable
{
	private string name;
	private string sex;
	private string age;	
	// 引用工作经历 
	private WorkExperience work;	
	public Resume(string name)
	{
		this.name = name;
		// 简历类实例化,同时实例化工作经历 
		work = new WorlExperience();
	}	
	// 设置个人信息
	public void SetPersonalInfo(string sex, string age)
	{
		this.sex = sex;
		this.age = age;
	}
	// 设置工作经历
	public void SetWorkExperience(string workDate, string company)
	{
		work.WorkDate = workDate;
		work.Company = company; 
	} 	
	// 显示
	public void Display()
	{
		Console.WriteLine("{0} {1} {2}", name, sex, age);
		Console.WriteLine("工作经历:{0} {1}", work.Date, work.Company);
	}
	public Object Clone()
	{
		return (Object)this.MemberwiseClone();
	}	
} 
// 客户端调用代码
static void Main(string[] args)
{
	Resume a = new Resume("大鸟");
	a.SetPersonalInfo("男", "29");
	a.SetWorkExperience("1998-2000", "xx公司");
	
	Resume b = (Resume)a.Clone();
	b.SetWorkExperience("1998-2006", "YY企业");
	
	Resume c = (Resume)a.Clone();
	c.SetWorkExperience("1998-2006", "YY企业");
	
	a.Display();
	b.Display();
	c.Display();
	
	Console.Read();
}   
  1. 深复制
// 工作经历
class WorkExperience: IClonable
{
	private string workDate;
	public string WorkDate
	{
		get{ return workDate; }
		set{ workDate = value; }
	}
	
	private string company;
	public string Company
	{
		get { return company; }
		set { company = value; }
	}
	
	public Object Clone()
	{
		return (Object)this.MemberwiseClone();
	}
} 

// 简历
class Resume: ICloneable
{
	private string name;
	private string sex;
	private string age;	
	// 引用工作经历 
	private WorkExperience work;	
	public Resume(string name)
	{
		this.name = name;
		// 简历类实例化,同时实例化工作经历 
		work = new WorlExperience();
	}	
	
	private Resume(WorkExperience work)
	{
		this.work = (WorkExperience)work.Clone();
	}
		
	// 设置个人信息
	public void SetPersonalInfo(string sex, string age)
	{
		this.sex = sex;
		this.age = age;
	}
	// 设置工作经历
	public void SetWorkExperience(string workDate, string company)
	{
		work.WorkDate = workDate;
		work.Company = company; 
	} 	
	// 显示
	public void Display()
	{
		Console.WriteLine("{0} {1} {2}", name, sex, age);
		Console.WriteLine("工作经历:{0} {1}", work.Date, work.Company);
	}
	public Object Clone()
	{
		return (Object)this.MemberwiseClone();
	}
	
	public Object Clone()
	{
		Resume obj = new Resume(this.work);
		obj.name = this.name;
		obj.sex = this.sex;
		obj.age = this.age;
		return obj;	
	}  	
} 
// 客户端调用代码
static void Main(string[] args)
{
	Resume a = new Resume("大鸟");
	a.SetPersonalInfo("男", "29");
	a.SetWorkExperience("1998-2000", "xx公司");
	
	Resume b = (Resume)a.Clone();
	b.SetWorkExperience("1998-2006", "YY企业");
	
	Resume c = (Resume)a.Clone();
	c.SetWorkExperience("1998-2006", "YY企业");
	
	a.Display();
	b.Display();
	c.Display();
	
	Console.Read();
}  
发布了43 篇原创文章 · 获赞 0 · 访问量 375

猜你喜欢

转载自blog.csdn.net/weixin_42505877/article/details/104651281
今日推荐