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

原型模式

描述

基于已有对象,利用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方式

否则直接构建基础对象

相关推荐
在未来等你14 分钟前
AI Agent设计模式 Day 2:Plan-and-Execute模式:先规划后执行的智能策略
设计模式·llm·react·ai agent·plan-and-execute
在未来等你6 小时前
AI Agent设计模式 Day 3:Self-Ask模式:自我提问驱动的推理链
设计模式·llm·react·ai agent·plan-and-execute
xiaodaidai丶14 小时前
设计模式之策略模式
设计模式·策略模式
_院长大人_15 小时前
设计模式-工厂模式
java·开发语言·设计模式
王道长服务器 | 亚马逊云1 天前
AWS + 苹果CMS:影视站建站的高效组合方案
服务器·数据库·搜索引擎·设计模式·云计算·aws
在未来等你1 天前
AI Agent设计模式 Day 1:ReAct模式:推理与行动的完美结合
设计模式·llm·react·ai agent·plan-and-execute
乐悠小码2 天前
Java设计模式精讲---03建造者模式
java·设计模式·建造者模式
_院长大人_2 天前
设计模式-代理模式
设计模式·代理模式
guangzan2 天前
TypeScript 中的单例模式
设计模式
乐悠小码3 天前
Java设计模式精讲---02抽象工厂模式
java·设计模式·抽象工厂模式