原型模式
原型模式通過給出一個原型對象來指明所要創建對象的類型,然後通過複製這個原型對象的辦法建出更多同類型的對象。
工作原理:通過將一個原型對象傳給那個要發動創建的對象,這個要發動創建的對象通過請求原型對象複製原型自己來實現創建過程。
原型模式結構圖:
Prototype表示抽象原型類,它定義具有克隆自己的方法的接口
ConcreteProductA,ConcreteProductB表示具體的原型類,實現了具體的克隆方法
Client表示客戶類,讓原型對象克隆自身從而創建一個新的對象
原型模式之快速創建工作週報:
具體原型類:
package ConcreteProduct;
public class WeekyLog implements Cloneable {
private String name;
private String date;
private String contetn;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getContetn() {
return contetn;
}
public void setContetn(String contetn) {
this.contetn = contetn;
}
public Object clone(){
Object obj=null;
try {
obj=super.clone();
return obj;
} catch (CloneNotSupportedException e) {
System.out.println("不能複製");
return null;
}
}
}
客戶端:package Client;
import ConcreteProduct.WeekyLog;
public class client {
public static void main(String args[]){
WeekyLog log_previous=new WeekyLog();
log_previous.setName("張三");
log_previous.setDate("2015年第一週");
log_previous.setContetn("這周很忙");
System.out.println("****週報****");
System.out.println(log_previous.getName());
System.out.println(log_previous.getDate());
System.out.println(log_previous.getContetn());
WeekyLog log_now;
log_now=(WeekyLog)log_previous.clone();
log_now.setDate("2015年第二週");
System.out.println("****週報****");
System.out.println(log_previous.getName());
System.out.println(log_previous.getDate());
System.out.println(log_previous.getContetn());
}
}