原型模式
原型模式通过给出一个原型对象来指明所要创建对象的类型,然后通过复制这个原型对象的办法建出更多同类型的对象。
工作原理:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象复制原型自己来实现创建过程。
原型模式结构图:
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());
}
}