第9章《原型模式》

前端之家收集整理的这篇文章主要介绍了第9章《原型模式》前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

调用这个类的clone()方法,实现新对象的创建及拷贝。

方法执行时间,从而提升性能

方法。

方法的类,在调用clone()方法时,都会实现浅拷贝。如果一个类没有实现Cloneable接口,在调用clone()方法时,会报错。这一点可以查看Cloneable接口的说明。

/**

  • @Author: cxh

  • @CreateTime: 18/1/7 11:49

  • @ProjectName: JavaBaseTest
    */
    public class Client {
    public static void main(String[] args) {
    Resume resume1=new Resume("李沁");
    resume1.setSelfInfo("女",22);
    resume1.setWorkExperience("北京",11,"技术研发");
    resume1.print();

     //原型模式的使用:根据指定对象resume1创建同类型的新对象resume2,且对对象的创建做定制,定制通过两个set<a href="/tag/fangfa/" target="_blank" class="keywords">方法</a>完成.
     Resume resume2=(Resume)resume1.clone();
     resume2.setSelfInfo("女",25);
     resume2.setWorkExperience("天津",9,"技术<a href="/tag/zhichi/" target="_blank" class="keywords">支持</a>");
     resume2.print();
    
     //clone()<a href="/tag/fangfa/" target="_blank" class="keywords">方法</a>对引用的拷贝是浅拷贝
     resume1.print();

    }
    }



/**

  • @Author: cxh

  • @CreateTime: 18/1/7 11:49

  • @ProjectName: JavaBaseTest
    */
    public class Resume implements Cloneable{
    private String name;
    private String sex;
    private int age;
    private WorkExperience experience;

    Resume(String name){
    this.name=name;
    experience=new WorkExperience();
    }

    @Override
    public Object clone() {
    return this;
    }

    //设置个人信息
    public void setSelfInfo(String sex,int age){
    this.sex=sex;
    this.age=age;
    }

    //设置工作经历
    public void setWorkExperience(String location,int time,String job){

     experience.setWorkSpace(location);
     experience.setStayTime(time);
     experience.setJob(job);

    }

    //打印简历信息
    public void print(){
    System.out.println("name:"+name);
    System.out.println("sex:"+sex);
    System.out.println("age:"+age);
    System.out.println("workSpace: 工作地点:"+experience.getWorkSpace()+",工作时长(年):"+experience.getStayTime()+",岗位:"+experience.getJob());
    }
    }



/**

  • @Author: cxh

  • @CreateTime: 18/1/7 11:50

  • @ProjectName: JavaBaseTest
    */
    public class WorkExperience {
    private String workPlace;
    private int stayTime;
    private String job;

    public void setWorkSpace(String workSpace) {
    this.workPlace = workSpace;
    }

    public void setStayTime(int stayTime) {
    this.stayTime = stayTime;
    }

    public void setJob(String job) {
    this.job = job;
    }

    public String getWorkSpace() {
    return workPlace;
    }

    public int getStayTime() {
    return stayTime;
    }

    public String getJob() {
    return job;
    }
    }

猜你在找的设计模式相关文章