深度克隆,原型模式

来源:互联网 发布:jira 数据库配置 编辑:程序博客网 时间:2024/05/16 09:16

clone分为两种,一种是浅克隆,一种是深度克隆,深度克隆可以有两种实现形式,一种时重写clone方法,还有一种是用数据流的方式进行克隆,因为克隆的本质也是底层二进制的克隆

1.

 public class Fks(){

    public int whells;

    public  String color;

   public ArrayList<String> list=new ArrayList<String>();

//get 和 set 注入函数省略

 public  Fks clone(){

  Fks fksClone=null;

  fksClone=(Fks)super.clone; //这句代码和下面的代码不能交换位置,即不能先对对象字段克隆在对对象进行克隆

  this.list=this.list.clone;  //因为要想深度克隆,就需要对非基本数据类型(String除外)进行单独的克隆处理

return fksClone;

}

}

2

public Object deepCopy(Object src)(){

  ByteArrayOutputStream byteOut = new ByteArrayOutputStream();  
        ObjectOutputStream out = new ObjectOutputStream(byteOut);  
        out.writeObject(src);  
      
        ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());  
        ObjectInputStream in = new ObjectInputStream(byteIn);  
        Object dest =  in.readObject();  
        return dest; 

}

3有一种设计模式用到了深度克隆,就是原型模式,

原型模式的定义:用原型实例指定创建的对象种类,并且通过拷贝这些原型对象创建新的对象   --摘录设计模式之禅(第2版)