设计模式之原型模式2,prototype

来源:互联网 发布:淘宝一妹子买了古着店 编辑:程序博客网 时间:2024/05/29 18:55
package liu.prototype2.demo;
public class WorkExperience implements Cloneable{
 private String workDate;
 private String company;
 public void setWorkDate(String workDate) {
  this.workDate = workDate;
 }
 public String getWorkDate() {
  return workDate;
 }
 public void setCompany(String company) {
  this.company = company;
 }
 public String getCompany() {
  return company;
 }
 
 public Object clone(){
  Object object=null;
  try {
   object = super.clone();
  } catch (CloneNotSupportedException e) {
   System.err.println("AbstractSpoon is not Cloneable");
   e.printStackTrace();
  }
  return object;
 }
}
---------------------------------------
package liu.prototype2.demo;
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();
 }
 
 public Resume (WorkExperience work){
  this.work = (WorkExperience)work.clone();
 }
 
 
 public void setPersonalInfo(String sex, String age){
  this.age = age;
  this.sex = sex;
 }
 
 public void setWorkExperience(String workDate, String company){
  work.setCompany(company);
  work.setWorkDate(workDate);
 }
 
 public void display(){
  System.out.println("姓名:"+name);
  System.out.println("年龄:"+age);
  System.out.println("性别:"+sex);
  System.out.println("工作时间:"+work.getWorkDate());
  System.out.println("公司:"+work.getCompany());
 }
 
 public Object clone(){
  Resume obj = new Resume(this.work);
  obj.name = this.name;
  obj.age = this.age;
  obj.sex = this.sex;
  return obj;
  
 }
}

-------------------------------------------

 package liu.prototype2.demo;
public class Main {

 public static void main(String[] args) {
  Resume a = new Resume("大鸟");
  a.setPersonalInfo("male", "29");
  a.setWorkExperience("2009", "xx company");
  
  Resume b = (Resume)a.clone();
  b.setWorkExperience("2009", "yy company");
  Resume c = (Resume) a.clone();
  c.setPersonalInfo("male", "24");
  c.setWorkExperience("2008", "zz company");
  
  a.display();
  b.display();
  c.display();
 }
}
原创粉丝点击