原型模式类图与代码

现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。

采用原型模式(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公司");
    }
}
相关推荐
rannn_11127 分钟前
【Redis|原理篇2】Redis网络模型、通信协议、内存回收
java·网络·redis·后端·缓存
徐新帅28 分钟前
4181:【GESP2603七级】拆分
c++·学习·算法·信奥赛
黎梨梨梨_37 分钟前
C++入门基础(下)(重载,引用,inline,nullptr)
开发语言·c++·算法
Jasmine_llq41 分钟前
《B4411 [GESP202509 二级] 优美的数字》
算法·暴力枚举算法·逐位校验算法·统一数位判断算法·条件计数算法·自定义函数判断算法
做时间的朋友。1 小时前
小华地图寻宝
算法
贾斯汀玛尔斯1 小时前
每天学一个算法--单调栈(Monotonic Stack)
运维·服务器·算法
遇见你的雩风1 小时前
网络原理(一)
java·网络
ZPC82101 小时前
ROS2 速度远快于 UDP的完整方案(同机节点)
人工智能·算法·计算机视觉·机器人
952361 小时前
Spring IoC&DI
java·数据库·spring
khalil10201 小时前
代码随想录算法训练营Day-34动态规划03 | 01背包问题 二维、01背包问题 一维、416. 分割等和子集
数据结构·c++·算法·leetcode·动态规划·背包问题·01背包