设计模式day4- 原型模式

原型模式

对象的拷贝

  1. 实现Cloneable接口,重写Object类clone方法

  2. 深拷贝、浅拷贝

  3. 浅拷贝:使用默认的clone()方法来实现

  4. 深拷贝:1.重写clone;2.通过对象序列化

  5. //深拷贝— 方式1使用clone 方法
    @Override
    protected Object clone() throws CloneNotSupportedException
    {
        Object deep = null;
        //这里完成对基本数据类型( 属性) 和String的克隆
        deep = super.clone();
        //对引用类型的属性, 进行单独处理
        DeepProtoType deepProtoType = (DeepProtoType) deep;
        deepPrototype.deepCloneableTarget = (DeepCloneableTarget)deepCloneableTarget.clone();
        //TODO Auto-generated method stub
        return deepProtoType;
    }
    
  6. //深拷贝—方式2通过对象的序列化实现(推荐)
    public Object deepClone() throws Exception
    { //创建流对象
        ByteArrayOutputStream bos = null;
        ObjectoutputStream oos = null;
        ByteArrayInputStream bis = null;
        ObjectInputStream ois = null;
        //序列化
        bos = new ByteArrayoutputStream();
        oos = new ObjectoutputStream(bos);
        oos.writeObject(this); //当前这个对象以对象流的方式输出 
        //反序列化
        bis = new ByteArrayInputStream(bos.toByteArray());
        ois = new ObjectInputStream(bis);
        DeepProtoType copyobj = (DeepProtoType) ois.readobject();
        return copyobj;
    }
    

spirng中原型模式

  1. bean创建,可使用原型模式创建
posted @ 2022-05-25 22:56  pizisu  阅读(16)  评论(0编辑  收藏  举报