当前位置:首页 > Java

java如何使用原型

2026-03-18 01:01:40Java

原型模式简介

原型模式是一种创建型设计模式,通过复制现有对象(原型)来生成新对象,而非通过构造函数。适用于对象创建成本较高或需要动态配置的场景。

实现步骤

1. 实现 Cloneable 接口
Java 要求原型类实现 Cloneable 接口(标记接口),否则调用 clone() 会抛出 CloneNotSupportedException

java如何使用原型

2. 重写 clone() 方法
默认的 Object.clone() 是浅拷贝。若需深拷贝,需在重写时手动处理引用类型字段。

@Override
protected Object clone() throws CloneNotSupportedException {
    return super.clone(); // 浅拷贝示例
}

3. 深拷贝实现
对引用类型字段递归调用 clone() 或通过序列化/反序列化实现。

java如何使用原型

@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;
    }
}

使用场景

  • 对象创建依赖数据库或网络调用等耗时操作。
  • 需动态配置对象属性,避免重复初始化。
  • 需要隔离对象副本,避免共享状态问题。

注意事项

  • 深拷贝需确保所有嵌套对象均支持拷贝,否则可能抛出异常。
  • 原型模式可能破坏单例模式,需避免克隆单例对象。

分享给朋友:

相关文章

react filter如何使用

react filter如何使用

react filter 的基本用法 在 React 中,filter 通常用于筛选数组数据,常见于列表渲染或数据处理场景。filter 是 JavaScript 数组的原生方法,但在 React 中…

react如何使用jquery

react如何使用jquery

在 React 中使用 jQuery React 和 jQuery 的设计理念不同,React 基于虚拟 DOM 和数据驱动,而 jQuery 直接操作真实 DOM。若需在 React 中整合 jQu…

react如何使用agora

react如何使用agora

使用 React 集成 Agora 视频通话 SDK 安装 Agora SDK 在 React 项目中安装 Agora RTC SDK: npm install agora-rtc-sdk 初始化…

react如何使用插槽

react如何使用插槽

使用props.children实现基础插槽 React中插槽的核心是通过props.children传递子组件。父组件在标签内部放置的内容会自动成为children属性: // 父组件 <C…

react如何使用插件

react如何使用插件

使用插件的基本方法 在React项目中使用插件通常涉及安装、导入和集成三个主要环节。以下是具体操作方式: 安装插件通过npm或yarn完成。例如,要安装react-router-dom插件,可以运行…

react redux如何使用

react redux如何使用

安装依赖 确保项目已安装 React 和 Redux 相关库。通过以下命令安装核心依赖: npm install redux react-redux @reduxjs/toolkit 创建 Stor…