原型模式概述
原型模式(Prototype)通过复制已有对象创建新对象,避免重复创建开销。
Cloneable接口
class Person implements Cloneable {
private String name;
@Override
protected Person clone() {
try {
return (Person) super.clone();
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
}
}
浅拷贝vs深拷贝
| 类型 | 特点 |
|---|---|
| 浅拷贝 | 引用类型复制地址 |
| 深拷贝 | 引用类型递归复制 |
深拷贝实现
@Override
protected Person clone() {
Person p = (Person) super.clone();
p.address = this.address.clone();
return p;
}
小结
- 原型模式克隆对象而非new创建
- 实现Cloneable接口
- 浅拷贝只复制引用
- 深拷贝递归复制所有引用