通过拷贝简历的案例来简单梳理原型模式
假设我们求职时,针对不同的公司岗位需要准备不同的求职简历来突出重点,
来看下用原型模式如何实现。
原型模式实现
定义简历类
首先定义一个简历类,实现Cloneable接口
public class Resume implements Cloneable{
private String name;
private String age;
private String sex;
private String timeArea;
private String company;
public Resume(String name){
this.name = name;
}
public void SetPersonalInfo(String sex, String age){
this.sex = sex;
this.age = age;
}
public void SetWorkExprience(String timeArea, String company){
this.company = company;
this.timeArea = timeArea;
}
public void Display(){
System.out.println(name+","+sex+","+age);
System.out.println("工作经历:"+timeArea+","+company);
}
@Override
public Object clone() throws CloneNotSupportedException{
return super.clone();
}
}
定义业务方法
看在具体业务逻辑中如何使用
public class PrototypeTest {
public static void func1() throws CloneNotSupportedException {
Resume a = new Resume("小明");
a.SetPersonalInfo("男", "30");
a.SetWorkExprience("2014-2017", "xx公司");
Resume b = (Resume) a.clone();
b.SetWorkExprience("2017-2022", "YY公司");
Resume c = (Resume) a.clone();
c.SetPersonalInfo("男","24");
a.Display();
b.Display();
c.Display();
}
public static void main(String[] args) throws CloneNotSupportedException {
//代理模式
func1();
}
}
执行结果
小明,男,30
工作经历:2014-2017,xx公司
小明,男,30
工作经历:2017-2022,YY公司
小明,男,24
工作经历:2014-2017,xx公司
结果分析
原型模式,用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
联系作者
微信公众号
xiaomingxiaola
(BossLiu)
QQ群
58726094
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 384276224@qq.com