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

原型模式

描述

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

否则直接构建基础对象

相关推荐
geovindu15 小时前
rust: Semaphore Pattern
开发语言·后端·设计模式·rust·代理模式·企业级信号量模式·同步型模式
是2的10次方啊16 小时前
设计模式与生活⑧:快递到了,别一直刷物流
设计模式
raindayinrain2 天前
c++设计模式
开发语言·c++·设计模式
工一木子2 天前
设计模式与生活⑦:你打的车,隔着一个平台
设计模式
电子科技圈2 天前
2026 RISC-V中国峰会观察:编译调试工具链的“在场节奏”,释放了什么信号?
大数据·人工智能·设计模式·软件工程·软件构建·代码规范·risc-v
电子科技圈2 天前
Arm电机控制开发工具哪家强?
arm开发·单片机·嵌入式硬件·设计模式·软件构建
是2的10次方啊3 天前
设计模式与生活⑦:你打的车,隔着一个平台
设计模式
geovindu3 天前
rust: Read-Write Lock Pattern
开发语言·后端·设计模式·rust·读写锁模式·同步型模式
工一木子4 天前
设计模式与生活⑤:天冷了,给电动车套件挡风被
设计模式
是2的10次方啊4 天前
设计模式与生活⑥:问题一个个砸过来,先写张便签
设计模式