1、介绍
定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
首先创建一个实例,然后通过这个实例去拷贝创建新的实例。
image.png
2、设计特点
需要拷贝值,而不是引用
(1)浅拷贝:浅拷贝是指在拷贝对象时,对于基本数据类型的变量会重新复制一份,而对于引用类型的变量只是对直接引用进行拷贝,没有对直接引用指向的对象进行拷贝。
(2)深拷贝:深拷贝是指在拷贝对象时,不仅把基本数据类型的变量会重新复制一份,同时会对引用指向的对象进行拷贝。
-
浅克隆(拷贝)
BeanUtils.copyproperties() 属于浅克隆 -
深克隆(拷贝)
克隆的特点:
(1)克隆的对象与原对象并不是同一个对象,分别占用不同的堆空间 x.clone()!=x
(2)克隆的对象与原对象的类型一样 x.clone().getClass()==x.clone().getClass()
(3) 克隆对象不会调用构造函数
3、使用场景
1. 在需要一个类的大量对象的时候,使用原型模式是最佳选择,因为原型模式是在内存中对这个对象进行拷贝,要比直接new这个对象性能要好很多,在这种情况下,需要的对象越多,原型模式体现出的优点越明显。
- 如果一个对象的初始化需要很多其他对象的数据准备或其他资源的繁琐计算,那么可以使用原型模式。
- 当需要一个对象的大量公共信息,少量字段进行个性化设置的时候,也可以使用原型模式拷贝出现有对象的副本进行加工处理。
网友评论