zoukankan      html  css  js  c++  java
  • 设计模式-原型模式

    一、原型模式的理解

    当对象的创建比较复杂时,考虑使用原型模式将对象拷贝一份,拷贝分为深度拷贝和浅拷贝,所谓拷贝就是将对象的属性拷贝的另一个对象中去,对于对象中的基本数据类型拷贝时为值传递,拷贝时直接将值拷贝过去,修改一个原型对象不会影响到拷贝对象,但是如果对象中的属性为引用类型时(数组或对象),浅拷贝只是将该成员变量的引用值拷贝一份给新的对象,因为两个对象的该成员变量都指向一个实例,所以只要一个发生变化,另一个也跟着变化。浅拷贝有两种方式实现,

    第一,构造方法赋值;

    第二、克隆的方式

     @Override
        protected Product clone() throws CloneNotSupportedException {
            /*ByteArrayOutputStream bos=new ByteArrayOutputStream();
            ObjectOutputStream oos=null;
            try {
                oos=new ObjectOutputStream(bos);
                oos.writeObject(this);
                ByteArrayInputStream bis=new ByteArrayInputStream(bos.toByteArray());
                ObjectInputStream ois=new ObjectInputStream(bis);
                return (Product)ois.readObject();
            } catch (IOException e) {
                e.printStackTrace();
            }catch (ClassNotFoundException e) {
                e.printStackTrace();
            }*/
    
            Product clone=(Product)super.clone();
            BaseInfo info=this.baseInfo.clone();
            clone.setBaseInfo(info);
            //return (Product)super.clone();
            return clone;
        }
    
    //测试类
    public class Test {
        public static void main(String[] args) throws CloneNotSupportedException {
    
            BaseInfo info=new BaseInfo();
            info.setInfo("uuu");
           Product product=new Product("ser",1,2,info);
    
    
            Product clone=product.clone();
            product.getBaseInfo().setInfo("yyy");
            System.out.println(product);
            System.out.println(clone);
        }
    }

    三、总结

    原型模式使用场景:

    1.对象创建复杂时,内部需要资源的复杂计算以及其他对象的数据准备时,需要用到原型模式;

    2.或对像备份时;

    3.当需要一个对象的大量公共信息,少量属性需要个性化定制时,需要使用到原型模式

  • 相关阅读:
    Quartz cron表达式
    Apache NiFi 核心概念和关键特性
    Hive llap服务安装说明及测试(一)
    nifi生产环境使用
    DataX 中Transformer的使用
    vue2.0之过渡动画,分别用钩子函数,animated,原生css实现(前端网备份)
    js对对象数组的某一字段排序(前端网备份)
    浏览器之禁扒(前端网备份)
    iframe 从父像子穿参数(前端网备份)
    关于小程序仿微博导航效果(前端网备份 )
  • 原文地址:https://www.cnblogs.com/lufei33180/p/13374760.html
Copyright © 2011-2022 走看看