设计模式-创建型-原型模式-prototype

工作经验类

public class WorkExperience implements Cloneable {
    private String workDate;
    private String company;

    public void setWorkDate(String workDate) {
        this.workDate = workDate;
    }

    public void setCompany(String company) {
        this.company = company;
    }

    @Override
    public Object clone() throws CloneNotSupportedException {
        WorkExperience obj = new WorkExperience();
        obj.workDate = this.workDate;
        obj.company = this.company;
        return obj;
    }

    @Override
    public String toString() {
        return "WorkExperience{" +
                "workDate='" + workDate + '\'' +
                ", company='" + company + '\'' +
                '}';
    }
}

简历类

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) throws CloneNotSupportedException {
        this.work = (WorkExperience) work.clone();
    }

    public void setPersonInfo(String sex, String age) {
        this.sex = sex;
        this.age = age;
    }

    public void setWorkExperience(String workDate, String company) {
        work.setWorkDate(workDate);
        work.setCompany(company);
    }


    @Override
    public Object clone() throws CloneNotSupportedException {
        Resume obj = new Resume(this.work);
        obj.name = name;
        obj.sex = sex;
        obj.age = age;
        return obj;
    }

    @Override
    public String toString() {
        return "Resume{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age='" + age + '\'' +
                ", work=" + work +
                '}';
    }
}

演示类

public class WorkResume {
    public static void main(String[] args) throws CloneNotSupportedException {
        Resume a = new Resume("张三");
        a.setPersonInfo("男","29");
        a.setWorkExperience("1998~2000","XXX公司");
        System.out.println(a);
        Resume b= (Resume) a.clone();
        b.setWorkExperience("2001~2006","YYY公司");
        System.out.println(b);
    }
}

演示结果

相关推荐

  1. 设计模式创建模式原型模式

    2024-05-12 08:04:02       28 阅读
  2. 设计模式Prototype原型模式

    2024-05-12 08:04:02       28 阅读
  3. 设计模式——原型模式Prototype

    2024-05-12 08:04:02       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 08:04:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 08:04:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 08:04:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 08:04:02       18 阅读

热门阅读

  1. GitLab CI/CD的原理及应用详解(一)

    2024-05-12 08:04:02       10 阅读
  2. python使用elasticserch进行混合搜索构建知识库

    2024-05-12 08:04:02       11 阅读
  3. docker-compose 安装kibana

    2024-05-12 08:04:02       11 阅读
  4. Kubernetes 控制平面的安全管理

    2024-05-12 08:04:02       9 阅读
  5. 第十七章 数据管理和组织变革管理练习

    2024-05-12 08:04:02       12 阅读
  6. go语言map底层及扩容机制原理详解(上)

    2024-05-12 08:04:02       10 阅读
  7. leetcode 1749.任意子数组和的绝对值的最大值

    2024-05-12 08:04:02       9 阅读
  8. PHP类和对象概念及用法

    2024-05-12 08:04:02       9 阅读