原型设计模式
🚩什么是原型设计模式?
原型模式(Prototype Pattern) 是 创建型设计模式 ,它用于 克隆对象,而不是重新创建它们。
在 原型模式 中,我们创建一个对象作为原型,并允许其克隆多个副本,而不必重新初始化所有字段。
使用场景
- 创建对象开销较大 ,但又需要 多个相似对象。
- 对象的构造过程复杂 ,希望通过 复制现有对象 来减少重复代码。
- 需要 避免使用 new 关键字 来创建实例。
🚩原型设计模式的特点
- 减少对象创建成本 :克隆对象比
new
关键字创建对象更高效。 - 避免重复初始化:对象已存在,直接克隆,不需要重复赋值。
- 提供深拷贝和浅拷贝:可以根据需求实现不同级别的克隆。
- 解耦对象构造:创建对象的逻辑独立于使用对象的逻辑。
🚩原型设计模式的结构
原型模式包含以下几个主要部分:
- Prototype(原型接口) :定义
clone()
方法,所有要克隆的类都要实现该接口。 - ConcretePrototype(具体原型类) :实现
Prototype
接口,并提供克隆对象的方法。 - Client(客户端) :通过调用
clone()
方法来创建新对象,而不是使用new
。
🚩原型设计模式的优缺点
✅ 优点
- 提高性能 :避免了
new
操作,减少对象创建开销。 - 简化对象创建 :只需要
clone()
方法即可获得新对象。 - 减少代码重复:省去了重新初始化对象的代码逻辑。
❌ 缺点
- 需要实现
clone()
方法 :所有类都要 显式实现克隆逻辑,可能增加代码复杂度。 - 深拷贝和浅拷贝问题 :
- 浅拷贝:仅复制对象本身,不复制其内部引用对象。
- 深拷贝:需要手动实现内部对象的克隆逻辑,可能增加代码复杂度。
🚩原型设计模式的Java实现
代码地址:GitHub
- 首先创建一个原型接口Prototype,接口定义一个
clone()
方法
java
/**
* @author hanson
* @description: 原型接口
* @date 2025-03-23 22:30:55
* @version: 1.0
*/
public interface Prototype {
public Object Clone();
}
- 现在创建一个具体的产品Product去实现这个接口,重写clone方法
java
/**
* @author hanson
* @description: 体原型类
* @date 2025-03-23 22:31:37
* @version: 1.0
*/
public class Product implements Prototype {
private int id;
private double price;
public Product() {
}
public Product(int id, double price) {
this.id = id;
this.price = price;
}
public int getId() {
return id;
}
public double getPrice() {
return price;
}
@Override
public Object Clone() {
Product object = new Product();
object.id = this.id;
object.price = this.price;
return object;
}
}
- 创建一个客户端调用测试
java
/**
* @author hanson
* @description: 模拟客户端
* @date 2025-03-23 22:33:22
* @version: 1.0
*/
public class PrototypePattern {
public static void main(String[] args) {
Product product1 = new Product(2022, 5.28);
System.out.println(product1.getId() + " " + product1.getPrice());
// Product product2 = new Product(2022, 5.28);
Product product2 = (Product) product1.Clone();
System.out.println(product2.getId() + " " + product2.getPrice());
Product product3 = (Product) product1.Clone();
System.out.println(product3.getId() + " " + product3.getPrice());
}
}
📌 运行结果

🚩代码总结
- Prototype(原型接口) 定义
Clone()
方法,所有要克隆的类都要实现该接口。 - Product(具体原型类) 实现
Prototype
接口,并在Clone()
方法中复制对象属性。 - Main(客户端) 通过
Clone()
方法克隆多个Product
实例,而不是使用new
关键字创建对象。
🚩总结
- 原型模式(Prototype Pattern) 适用于 创建成本高 或 构造逻辑复杂 的对象。
- 通过
clone()
方法复制对象,避免new
关键字的高成本操作。 - 在 Java 中,可以使用
Cloneable
接口和Object.clone()
方法 简化克隆操作。 - 在实现深拷贝时 ,需要 手动克隆内部对象,以避免浅拷贝带来的问题。
✅ 适用场景:
- 需要 高效创建对象 ,避免
new
关键字带来的性能损耗。 - 需要 重复创建相同类型的对象,但不希望每次都手动初始化。
- 适用于 具有复杂状态的对象,希望通过复制来保留状态。
创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️
