现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。
采用原型模式(Prototype)来实现上述要求,得到如图 7.25 所示的类图。
原型模型是一种对象创建模型,用原型实体指定创建对象的种类,并且通过复制这些原型创建新的对象。原型模型允许一个对象再创建另一个可定制的对象,无须知道任何创建的细节。
【Java代码】
public class WorkExperience implements Cloneable{//工作经历private String workDate;private String company;public Object clone {WorkExperience Obj = new WorkExperience();Obj.workDate = this.workDate;Obj.company = this.company;return Obj;}//其余代码省略
}public class Resume implements Cloneable{//简历private String name;private String sex;private String age;private WorkExperience work;public Resume(String name){this.name = name;work = new WorkExperience();}private Resume(WorkExperience work){this.work = (WorkExperience)work.clone();}public void SetPersonInfo(String sex,String age){/*实现省略*/}public void SetWorkExperience(String workDate,String company){/*实现省略*/}public Object clone(){Resume Obj = new Resume(this.work);return Obj;}
}Class WorkResume{public static void main(){Resume a = new Resume("张三");a.SetPersonInfo("男","29");a.SetWorkExperience("1998-2000","XXX公司");Resume b = (Resume)a.clone();b.SetWorkExperience("2001-2006","YYY公司");}
}