首页 > 其他 > 详细

原型模式

时间:2020-07-10 20:32:12      阅读:52      评论:0      收藏:0      [点我收藏+]

1.1概念

用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。需要实现Cloneable接口,重写clone()方法。

//克隆过程内部的数组和引用对象不会拷贝,其他的原始基本类型和String类型会被拷贝。
//方法一:重写clone方法,将对象的所有属性都手动克隆一下。
//方法二:序列化和反序列化,涉及IO流,效率不高。
//克隆只是在堆内存进行操作,不会执行构造函数。
  1. 克隆对象不会调用构造方法
    构造方法只在一开始我们创建原型的时候输出了,执行clone方法的时候是直接从内存中去获取数据的,在第一次创建对象的时候就会把数据在内存保留一份,克隆的时候直接调用就好了。
  2. 访问权限对原型模式无效
    原理也很简单,我们是从内存中直接复制的,所以克隆起来也会直接无视,复制相应的内容就好了。

具体实例

Spring中依赖注入的默认对象为单例形式,@Scope(“prototype”)注解可以将其改变为原型模式。
改变底层(如service层)的对象为原型模式时,同时改变上层调用层(如controller层)的调用方式,原型模式才会生效。修改Autowired->Autowired+Qualifier或者修改Autowired->Resource。因为Autowired按照类型进行注入,当单例模式时只有一个对象实例就不会出现问题,但是当改为原型模式时,spring就不知道选择哪个实例了,可以通过加上Qualifier注解指定名字,也可以通过Resource注解指定名字。

原型模式

原文:https://www.cnblogs.com/jiezao/p/13280200.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!