1. 原型模式的核心概念
原型模式(Prototype Pattern)是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过new关键字实例化。这种模式特别适用于以下场景:
- 对象创建成本较高(如需要复杂计算或资源加载)
- 系统需要避免使用与产品类层次平行的工厂类层次
- 需要动态指定实例化的类
在Java中,原型模式通常通过实现Cloneable接口并重写clone()方法来实现。但要注意的是,Object类中的clone()方法执行的是浅拷贝(shallow copy),这意味着:
- 基本类型字段会被完整复制
- 引用类型字段只会复制引用地址(新旧对象共享同一引用)
重要提示:如果需要进行深拷贝(deep copy),需要在clone()方法中手动处理引用类型字段的复制。
2. 原型模式的实现方式
2.1 基础实现示例
java复制public class PrototypeDemo implements Cloneable {
private String name;
private List<String> attributes;
// 构造方法
public PrototypeDemo(String name, List<String> attributes) {
this.name = name;
this.attributes = attributes;
}
// 重写clone方法
@Override
public PrototypeDemo clone() {
try {
PrototypeDemo cloned = (PrototypeDemo) super.clone();
// 手动处理引用类型的深拷贝
cloned.attributes = new ArrayList<>(this.attributes);
return cloned;
} catch (CloneNotSupportedException e) {
throw new AssertionError(); // 不会发生
}
}
// getter/setter方法...
}
2.2 原型管理器实现
在实际应用中,我们通常会使用原型管理器来管理各种原型对象:
java复制public class PrototypeManager {
private static Map<String, Prototype> prototypes = new HashMap<>();
static {
// 初始化时注册各种原型
prototypes.put("default", new ConcretePrototypeA());
prototypes.put("special", new ConcretePrototypeB());
}
pu
解锁全文
加入我们的会员,获取最新、最热、最精彩的开发者技术内容