设计模式之原型模式

  1. 通过拷贝简历的案例来简单梳理原型模式
    1. 原型模式实现
      1. 定义简历类
      2. 定义业务方法
      3. 执行结果
      4. 结果分析
  2. 联系作者
    1. 微信公众号
    2. QQ群

通过拷贝简历的案例来简单梳理原型模式

假设我们求职时,针对不同的公司岗位需要准备不同的求职简历来突出重点,
来看下用原型模式如何实现。

原型模式实现

定义简历类

首先定义一个简历类,实现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

×

喜欢就点赞,疼爱就打赏

日记本 网文世界