JDBC基礎入門(2)
阿新 • • 發佈:2022-05-04
原型模式
原型模式(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); } }