java 设计模式 原型模式

简介

原型模式(Prototype Pattern) 是一种创建型 设计模式,它通过复制现有对象生成新对象,而不是通过 new 关键字创建。核心思想是减少对象创建的开销,尤其是当对象初始化过程复杂或代价较高时。

原型模式的核心实现

1.实现 Cloneable 接口

Java 的 Object 类提供了 clone() 方法,但需要类实现 Cloneable 接口(标记接口)才能调用。

2.重写 clone() 方法

通常重写 clone() 方法以实现对象的深拷贝或浅拷贝。

默认浅拷贝

java 复制代码
class Prototype implements Cloneable {
    private String name;
    private List<String> data;

    public Prototype(String name, List<String> data) {
        this.name = name;
        this.data = data;
    }

    // 深拷贝实现
    @Override
    protected Prototype clone() {
        try {
            Prototype cloned = (Prototype) super.clone(); //这里只实现基础数据类型的拷贝,对于对象是没有进行深拷贝的
            cloned.data = new ArrayList<>(this.data); // 深拷贝引用对象 手动深拷贝
            return cloned;
        } catch (CloneNotSupportedException e) {
            throw new AssertionError();
        }
    }
}

使用场景

对象创建成本高

当对象初始化需要大量资源(如数据库连接、复杂计算)时,直接复制现有对象更高效。

例如:数据库配置对象、复杂的游戏角色对象。

避免重复初始化

当新对象与原对象差异较小时,直接克隆比重新构造更便捷。

例如:修改已有对象的少数属性生成新对象。

动态运行时对象生成

在运行时动态生成对象,无需依赖具体类。

例如:通过克隆预定义原型(如工具条按钮)生成新组件。

保护性拷贝

防止外部代码修改对象内部状态,返回对象的拷贝而非原始对象。

例如:不可变对象的防御性复制。

原型模式的优缺点

优点

减少对象创建开销,提升性能。

简化复杂对象的创建过程。

动态扩展对象行为(通过组合原型)。

缺点

深拷贝需手动处理引用对象(如集合、嵌套对象)。

每个类需实现 clone() 方法,增加代码复杂度。

总结

实际原型模式就是在我们需要创建大量对象的时候,为了节省重复创建对象时候的开销,所以用到了原型模式,他能帮我们快速,高效的创建重复对象

相关推荐
事圆则缓6 分钟前
Java I/O、文件与 Android 存储
java
wno70412 分钟前
Spring Security基础使用
java·后端·spring
小蒜学长1 小时前
基于RFID技术的仓储管理系统设计(代码+数据库+LW)
java·数据库·spring boot·后端·rfid技术·仓储管理
梦影_1 小时前
Langchain简单快速上手教程(五)——聊天模型之流式传输
java·数据库·人工智能·python·langchain
数据狐(Datafox)1 小时前
1688商品列表API接口解析(附 JSON 样例)
java·开发语言·数据库·爬虫·json
xcl09251 小时前
健身场馆无人自动化系统:从架构设计到落地实践
java·spring boot
一木 之林1 小时前
第 8 节 C++ 设计模式在 AI 推理 SDK 和 Agent 工具运行时中如何落地
c++·人工智能·设计模式
EatFan1 小时前
一个二维码背后的系统设计:批次生成、绑定、扫码与数据统计怎么做?
java·后端·微信小程序·二维码·qrcode
白远山1 小时前
自助健身小程序源码:架构拆解、核心链路与本地部署实战
java·架构·uni-app·需求分析
Lyyaoo.2 小时前
【动态规划】【待更新】
java·数据结构·算法