设计模式——原型模式

任意一个类通过克隆的方法去得出另一类,原始类叫做原型
1、任意创建一个类,让这个类去实现一个接口Cloneable,重写一个方法clone(),此时没有修改clone里面,也就是浅拷贝,不会克隆属性

/**
 * 实现一个接口 Cloneable
 * 重写一个方法 clone()
 */
public class Video implements Cloneable{
    //设置两个属性
    private String name;
    private Date createTime;

    //实现里面的克隆方法
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    public Video(){

    }

    public Video(String name, Date createTime) {
        this.name = name;
        this.createTime = createTime;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    @Override
    public String toString() {
        return "Video{" +
                "name='" + name + '\'' +
                ", createTime=" + createTime +
                '}';
    }
}

2、深拷贝,修改clone里面的方法内容,进行属性的拷贝

/**
 * 实现一个接口 Cloneable
 * 重写一个方法 clone()
 */
public class Video implements Cloneable{
    //设置两个属性
    private String name;
    private Date createTime;

    //实现里面的克隆方法
    @Override
    protected Object clone() throws CloneNotSupportedException {
        Object obj = super.clone();

        Video video = (Video)obj;
        //将这个对象的属性也克隆
        video.createTIme = this.createTime.clone();

        return video;
    }

    public Video(){

    }

    public Video(String name, Date createTime) {
        this.name = name;
        this.createTime = createTime;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    @Override
    public String toString() {
        return "Video{" +
                "name='" + name + '\'' +
                ", createTime=" + createTime +
                '}';
    }
}
posted @ 2021-12-24 21:02  刘小呆  阅读(19)  评论(0编辑  收藏  举报