问题描述
设想我们需要给不同时间点的自己写三份简历,此时姓名和性别不变,只有年龄和工作经历有变化。 现在给出这三份简历。
代码实现
工作经历类
class WorkExperience:ICloneable
{
public string WorkData { get;set; }
public string Company { get; set; }
public Object Clone()
{
return (Object)this.MemberwiseClone();
}
}
简历类
class Resume : ICloneable
{
private string mName;
private string mSex;
private string mAge;
private WorkExperience mWork;
public Resume(string name)
{
mName = name;
mWork = new WorkExperience();
}
private Resume(WorkExperience work)
{
mWork = work.Clone() as WorkExperience;
}
public void SetPersonalInfo(string sex,string age)
{
mSex = sex;
mAge = age;
}
public void SetWorkExperience(string workData,string company)
{
mWork.WorkData = workData;
mWork.Company = company;
}
public void Display()
{
Console.WriteLine($"{mName} {mSex} {mAge}");
Console.WriteLine($"工作经历:{mWork.WorkData} {mWork.Company}");
}
public Object Clone()
{
Resume obj = new Resume(mWork);
obj.mName = mName;
obj.mSex = mSex;
obj.mAge = mAge;
return obj;
}
}
客户端调用
class Program
{
static void Main(string[] args)
{
Resume resume = new Resume("大鸟");
resume.SetPersonalInfo("男", "28");
resume.SetWorkExperience("2019-2024", "h3d");
Resume resume1 = resume.Clone() as Resume;
resume1.SetWorkExperience("2025-2026", "bd");
Resume resume2 = resume.Clone() as Resume;
resume2.SetWorkExperience("2027-2030", "tx");
resume.Display();
resume1.Display();
resume2.Display();
}
}
执行结果:
大鸟 男 28
工作经历:2019-2024 h3d
大鸟 男 28
工作经历:2025-2026 bd
大鸟 男 28
工作经历:2027-2030 tx