原型模式-

定义:原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

适用场景

       1、类初始化消耗资源过多
       2、new产生的一个对象需要非常繁琐的过程(数据准备、访问权限等)
       3、构造函数比较复杂
       4、循环体中生产大量对象时

优点

性能优良,java自带的原型模式是基于内存二进制流的拷贝,比直接new一个对象性能上提升了许多。

可以使用深克隆方式保存对象的状态。使用原型模式将对象复制一份,并将其状态保存起来,简化创建的过程,以便在需要的时候使用(如恢复到某一历史状态),可辅助实现撤销操作。

缺点

       1、必须配备克隆(或者可拷贝)方法

       2、当对已有类进行改造的时候,需要修改代码,违反了开闭原则

       3、深拷贝、浅拷贝需要运用得当

深克隆: 值复制-只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存, 所以如果其中一个对象改变了这个地址,就会影响到另一个对象。

浅克隆:引用复制-将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象,且修改新对象不会影响原对象。

源码应用
               1)浅克隆:

               BeanUtils.copyproperties() ;

               Java 中 Object 类是所有类的根类,Object 类提供了一个 clone()方法(调用 clone方法的Java类必须要实现一个接口Cloneable,这是一个标志接口,标志该类能够复制且具有复制的能力,如果不实现 Cloneable 接口,直接调用clone方法,会抛出 CloneNotSupportedException 异常),默认是浅克隆;

               2)深克隆:重写Object类的clone方法,将 Java 对象值复制一份

              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值