原型模式
字数: 0 字 时长: 0 分钟
简介
原型模式(Prototype Pattern)核心是通过复制现有对象来创建新对象,避免重新创建对象的昂贵开销。
UML 类图
- 原型接口(Prototype):声明一个克隆自身的接口,所有具体原型类都需要实现这个接口
- 具体原型类(ConcretePrototype):实现克隆方法,定义如何复制自身的对象
深拷贝与浅拷贝
原型模式就是通过拷贝来创建对象,JDK 原生支持,即实现 Cloneable
接口,重写 clone()
方法。
- 浅拷贝:只复制基本类型字段和引用地址(也就是只复制一层),默认的
clone()
实现 - 深拷贝:复制基本类型字段,创建新对象递归复制引用对象
java
public class Teacher implements Cloneable {
private String name;
private List<Student> students;
@Override
public Teacher clone() {
// 浅拷贝
return (Teacher) super.clone();
}
// 深拷贝示例
public Teacher deepClone() {
Teacher teacher = this.clone();
// 创建新对象
List list = new ArrayList<>();
// 递归复制引用对象
students.forEach(student -> list.add(student.clone()));
teacher.setStudents(list);
return teacher;
}
}