1. 程式人生 > 其它 >生產環境大型sql語句調優實戰第一篇(二) (r2筆記32天)

生產環境大型sql語句調優實戰第一篇(二) (r2筆記32天)

原型模式

原型模式(Prototype Pattern)是用於建立重複的物件,同時又能保證效能。屬於建立型模式的一種,提供了一種建立物件的最佳方式。

這種模式是實現了一個原型介面

實踐

可以將深拷貝換成淺拷貝看下結果
個人理解:原型模式就是一種優雅的拷貝實現方式

Video.java

package com.example.designPattern23.prototype;

import java.util.Date;

import lombok.Data;

@Data
public class Video implements Cloneable {
    private String id;
    private Date date;

    public Video() {
    }

//    // 淺拷貝
//    @Override
//    protected Object clone() throws CloneNotSupportedException {
//        return super.clone();
//    }

    // 深拷貝
    @Override
    protected Object clone() throws CloneNotSupportedException {
        Object o = super.clone();
        Video v = (Video) o;
        v.date = (Date) date.clone();

        return v;
    }

    public Video(String id, Date date) {
        this.id = id;
        this.date = date;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

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

呼叫Bilibili.java

package com.example.designPattern23.prototype;

import java.util.Date;


public class Bilibili {
    public static void main(String[] args) throws CloneNotSupportedException, InterruptedException {
        Date date = new Date();
        Video v1 = new Video("狂神說java", date);
        Video v2 = (Video) v1.clone();
        System.out.println("v1:" + v1);
        System.out.println("v2:" + v2);
        System.out.println("================================");
        date.setTime(1213144);
        System.out.println("v1:" + v1);
        System.out.println("v2:" + v2);
    }
}