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

工作经验类

java 复制代码
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 + '\'' +
                '}';
    }
}

简历类

java 复制代码
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 +
                '}';
    }
}

演示类

java 复制代码
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);
    }
}

演示结果

相关推荐
JIngJaneIL8 分钟前
基于java + vue校园快递物流管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js
超级大只老咪13 分钟前
数组的正向存储VS反向存储(Java)
java·开发语言·python
毕设源码-赖学姐18 分钟前
【开题答辩全过程】以 基于JSP的物流信息网的设计与实现为例,包含答辩的问题和答案
java·开发语言
Honmaple18 分钟前
Spring AI 2.x 发布:全面拥抱 Java 21,Redis 史诗级增强
java·人工智能·spring
代码or搬砖1 小时前
Java集合-Set讲解
java·开发语言
渣娃-小晴晴1 小时前
java集合在并发环境下应用时的注意事项
java·后端
北极糊的狐1 小时前
若依系统报错net::ERR_CONNECTION_TIMED_OUT的原因
java·windows·sql·mybatis
FLGB2 小时前
maven漏洞检测报告
java·maven
农夫山泉2号2 小时前
【c++】——c++编译的so中函数有额外的字符
java·服务器·c++