当前位置:首页 > 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如何使用swiper

react如何使用swiper

安装 Swiper 依赖 在 React 项目中使用 Swiper 前,需要安装 Swiper 的核心库和 React 组件库。通过 npm 或 yarn 安装以下依赖: npm install s…

react refs如何使用

react refs如何使用

React Refs 的基本概念 Refs 提供了一种直接访问 DOM 节点或 React 组件实例的方式。通常在需要直接操作 DOM 或访问组件方法时使用。 创建 Refs 使用 React.cr…

react 如何使用axios

react 如何使用axios

安装 axios 在 React 项目中安装 axios 依赖包: npm install axios # 或 yarn add axios 引入 axios 在需要发送 HTTP 请求的组件或文件…

react如何使用dispatch

react如何使用dispatch

使用 useDispatch 钩子 在函数组件中,通过 react-redux 提供的 useDispatch 钩子获取 dispatch 函数。引入 useDispatch 后直接调用即可:…

react 如何使用fiber

react 如何使用fiber

使用 React Fiber 的方法 React Fiber 是 React 16 引入的重新实现的协调算法,用于优化渲染性能。以下是使用 Fiber 的方法。 理解 React Fiber 的核心…

react你如何使用axios

react你如何使用axios

安装 axios 在 React 项目中使用 axios 前,需要先安装它。可以通过 npm 或 yarn 安装: npm install axios 或 yarn add axios 引入 ax…