java如何使用原型
原型模式简介
原型模式是一种创建型设计模式,通过复制现有对象(原型)来生成新对象,而非通过构造函数。适用于对象创建成本较高或需要动态配置的场景。
实现步骤
1. 实现 Cloneable 接口
Java 要求原型类实现 Cloneable 接口(标记接口),否则调用 clone() 会抛出 CloneNotSupportedException。

2. 重写 clone() 方法
默认的 Object.clone() 是浅拷贝。若需深拷贝,需在重写时手动处理引用类型字段。
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone(); // 浅拷贝示例
}
3. 深拷贝实现
对引用类型字段递归调用 clone() 或通过序列化/反序列化实现。

@Override
protected Object clone() throws CloneNotSupportedException {
DeepCopyExample copy = (DeepCopyExample) super.clone();
copy.referenceField = (ReferenceType) referenceField.clone(); // 递归拷贝
return copy;
}
示例代码
浅拷贝示例
class ShallowCopyExample implements Cloneable {
private int value;
private List<String> list;
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone(); // 浅拷贝:list字段共享引用
}
}
深拷贝示例
class DeepCopyExample implements Cloneable {
private int value;
private List<String> list;
@Override
protected Object clone() throws CloneNotSupportedException {
DeepCopyExample copy = (DeepCopyExample) super.clone();
copy.list = new ArrayList<>(this.list); // 深拷贝list
return copy;
}
}
使用场景
- 对象创建依赖数据库或网络调用等耗时操作。
- 需动态配置对象属性,避免重复初始化。
- 需要隔离对象副本,避免共享状态问题。
注意事项
- 深拷贝需确保所有嵌套对象均支持拷贝,否则可能抛出异常。
- 原型模式可能破坏单例模式,需避免克隆单例对象。






