- 该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象
- 是指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
- 原型模式也称为克隆模式,即某个对象为原型克隆出来一个一模一样的对象,该对象的属性和原型对象一模一样。而且对于原型对象没有任何影响。原型模式克隆的方法有两种:浅克隆和深度克隆
1.1 浅克隆
- 被复制对象的所有变量都含有与原来对象相同的值,而所有的对象的依然指向原来的对象,简而言之浅克隆克隆只是原来的对象而不是其引用对象 ,如Object 提供的clone方法 就是浅克隆
1.1.1 Object.clone()
package com.san.prototype;
import lombok.Data;
import java.util.List;
@Data
public class ConcreatePrototypeA implements Cloneable {
private String name;
private Integer age;
private List hobbies;
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
1.1.2 Spring的BeanUtils.copyProperties()
- BeanUtils.copyProperties();
1.1.3 Arrays.copyOf()
1.2 深克隆
2. 原型模式的优点/缺点及适用场景
2.1原型模式的优点
2.2 原型模式的缺点
2.3 原型模式的适用场景
- 类初始化消耗资源较多
- new产生一个对象需要非常繁琐的过程(数据准备、访问权限等)
- 构造函数比较复杂
- 循环体中生成大量对象时
3.原型模式简单案例