原型模式 : 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
类图:
代码:
publicclass Propotype {
publicintid;
public String name;
public Propotype clone(){
returnthis.clone();
}
}
publicclass ConcretePropotype1 extends Propotype {
publicintage;
public Propotype clone(){
ConcretePropotype1 clone=new ConcretePropotype1();
clone.age=this.age;
clone.id=super.id;
clone.name=super.name;
return clone;
}
}
publicclass ConcretePropotype2 extends Propotype {
public String sex;
public Propotype clone(){
ConcretePropotype2 clone=new ConcretePropotype2();
clone.sex=this.sex;
clone.id=super.id;
clone.name=super.name;
return clone;
}
}
publicstaticvoid main(String[] args) {
Propotype obj=new ConcretePropotype2();
obj.name="jeor";
Propotype obj2= obj.clone();
System.out.println("改变值前");
System.out.println(obj.name);
System.out.println(obj2.name);
obj.name="JEOR";
System.out.println("\n改变值后");
System.out.println(obj.name);
System.out.println(obj2.name);
}
看法:
原型模式就是克隆对象,克隆分为深克隆(对象里的对象也克隆)和浅克隆(对象里的对象是同一个对象)。java已经实现了此模式objec类的c lone方法,调用clone方法返回一个克隆体。