设计模式简述(七)原型模式

原型模式

描述

基于已有对象,利用JDK的Cloneable接口,生成一个新的对象。

常用于需要同时创建多个对象的场景
默认的clone是浅拷贝,如果要实现深拷贝需自行处理

  • 可以在clone方法中手动拷贝数组成员或者其他引用类型成员
  • 还可以通过对象二进制流的方式实现深拷贝

基本使用

  • 声明一个实现Cloneable的类
java 复制代码
public class User implements Cloneable {
    private String name;
    private String address;

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public User clone() {
        try {
            return (User) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new RuntimeException(e);
        }
    }
}
  • 使用
java 复制代码
public class Sample {
    public static void main(String[] args) {
        User baseUser = new User();
        baseUser.setName("张三");
        // 基于张三的名称 创建多个副本 每个副本设置不同的地址
        for (int i = 0; i < 3; i++) {
            User cloneUser = baseUser.clone();
            cloneUser.setAddress("地址:" + i);
            System.out.println(cloneUser);
        }
    }
}

使用场景

当构建基础对象比较耗时时,采用Clone方式

否则直接构建基础对象

相关推荐
GISer_Jing1 天前
AI Agent 目标设定与异常处理
人工智能·设计模式·aigc
蔺太微1 天前
组合模式(Composite Pattern)
设计模式·组合模式
鱼跃鹰飞1 天前
DDD中的防腐层
java·设计模式·架构
会员果汁1 天前
15.设计模式-组合模式
设计模式·组合模式
YUEchn1 天前
无处不在的Agent
设计模式·llm·agent
茶本无香1 天前
设计模式之二—原型模式:灵活的对象克隆机制
java·设计模式·原型模式
GISer_Jing1 天前
Nano Banana+LoveArt三大核心功能解析:重构AI设计全链路,让创意落地更高效
人工智能·设计模式·aigc
会员果汁1 天前
14.设计模式-备忘录模式
设计模式·备忘录模式
xiaolyuh1232 天前
Spring 框架 核心架构设计 深度详解
spring·设计模式·spring 设计模式
GISer_Jing2 天前
智能体工具使用、规划模式
人工智能·设计模式·prompt·aigc