概念:
原型模式 (Prototype Pattern)是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而无需依赖于昂贵的实例化过程。该模式基于原型实例生成新的对象,并且可以根据需要进行修改和定制。
特点:
- 通过克隆已有对象来创建新对象,避免了重复的初始化过程。
- 可以动态地添加或删除已有的原型。
- 提供了一种简单、灵活和高效的方式来创建多个相似对象。
优点:
- 减少了重复代码,提高了代码复用性。
- 避免了耗时的实例化操作,提升性能。
- 简化了对象创建过程,使得系统更加灵活。
缺点:
- 需要为每个可变属性添加适当的克隆方法,并在每次修改时更新这些方法。
- 如果存在循环引用,则需要小心处理克隆过程中可能出现的无限循环问题。
适用场景:
- 当一个系统需要独立于其具体类型创建多个相似但不同配置项或版本时,可以使用原型模式。
- 当一个系统需要动态地加载和配置类实例时,可以使用原型模式。
实现方式:
浅拷贝:
直接对目标对象进行浅拷贝,复制基本数据类型的值和引用类型的地址。
实现原理
- 创建一个新对象,并将原始对象中所有的字段值复制给新对象。
- 对于基本数据类型,直接进行值复制。
- 对于引用类型,只复制其地址而不创建新的实例。
实现代码:
import java.util.ArrayList;
import java.util.List;
class Prototype implements Cloneable {
private int id;
private String name;
private List<String> list;
// 构造函数
public Prototype(int id, String name, List<String> list) {
this.id = id;
this.name = name;
this.list = list;
}
// Getter 和 Setter
public void setList(List<String> list)