现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。
采用原型模式(Prototype)来实现上述要求,得到如图 7.25 所示的类图。
原型模型是一种对象创建模型,用原型实体指定创建对象的种类,并且通过复制这些原型创建新的对象。原型模型允许一个对象再创建另一个可定制的对象,无须知道任何创建的细节。
【Java代码】
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公司");
}
}