原型模式 即对象的克隆复制
原型模式定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.
分为浅拷贝和深拷贝
Java语言的构建模型直接支持原型模型模式,所有要克隆的类必须实现一个标识接口Cloneable。所有的类都有一个Clone()方法(Object提供)。克隆满足的条件:对于任何对象x,都有x.clone()!=x,换言之,克隆的对象不是原来的对象;x.clone().getClass()==x.getClass(),换言之,克隆的对象与原对象是同一类型。x.clone().equals(x)成立
package prototype;
/**
* 原型模型类(Clone是java中原型模式的完美实现)
* @author Administrator
*
*/
public class Bus implements Cloneable{
private Integer tires;
//深拷贝时用
public Bus(Integer tires){
this.tires=tires;
}
public Bus(){
}
public Integer getTires() {
return tires;
}
public void setTires(Integer tires) {
this.tires = tires;
}//轮胎数量
public void getTiresNum(){
System.out.println(tires);
}
/**
* 重写拷贝方法
*/
@Override
protected Object clone(){
// Bus p = new Bus(tires);//深克隆
// return p;
//浅克隆
try{
return super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
return null;
}
}
}
public class Prototype {
public static void main(String[] args) {
Bus bus= new Bus();
bus.setTires(5);
bus.getTiresNum();
Bus bus1 = (Bus)bus.clone();
bus1.getTiresNum();//此时bus 和bus1的数量是一样的
//当bus改变数量时 bus1是不变的
bus.setTires(6);
bus.getTiresNum();
bus1.getTiresNum();
}
}