原型模式类图与代码

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

采用原型模式(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公司");
    }
}
相关推荐
悟能不能悟17 小时前
springboot在DTO使用service,怎么写
java·数据库·spring boot
Uluoyu17 小时前
支持Word (doc/docx) 和 PDF 转成一张垂直拼接的长PNG图片工具类
java·pdf·word
__XYZ17 小时前
RedisTemplate 实现分布式锁
java·spring boot·redis·分布式·junit
闭着眼睛学算法17 小时前
【双机位A卷】华为OD笔试之【模拟】双机位A-新学校选址【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
java·c语言·javascript·c++·python·算法·华为od
玉夏17 小时前
【每日算法C#】爬楼梯问题 LeetCode
算法·leetcode·c#
学好statistics和DS17 小时前
【CV】泊松图像融合
算法·计算机视觉
贝塔实验室17 小时前
QPSK信号载波同步技术---极性Costas 法载波同步
计算机网络·算法·网络安全·数学建模·信息与通信·信号处理·傅立叶分析
前端小刘哥17 小时前
视频直播点播平台EasyDSS视频直播功能的技术实现与应用场景解析
算法
前端小刘哥17 小时前
企业运营效率瓶颈?新版视频直播点播平台EasyDSS用视频能力破局!
算法
曦樂~17 小时前
一些可用于排序的函数(2542. 最大子序列的分数)
算法