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

原型模式

描述

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

否则直接构建基础对象

相关推荐
GodKeyNet1 小时前
设计模式-责任链模式
java·设计模式·责任链模式
摘星编程6 小时前
深入理解责任链模式:从HTTP中间件到异常处理的实战应用
http·设计模式·中间件·责任链模式·实战应用
鼠鼠我呀28 小时前
【设计模式04】单例模式
单例模式·设计模式
缘来是庄16 小时前
设计模式之访问者模式
java·设计模式·访问者模式
hqxstudying19 小时前
Java创建型模式---单例模式
java·数据结构·设计模式·代码规范
花好月圆春祺夏安20 小时前
基于odoo17的设计模式详解---装饰模式
数据库·python·设计模式
fie888920 小时前
浅谈几种js设计模式
开发语言·javascript·设计模式
哆啦A梦的口袋呀20 小时前
《深入设计模式》模式结构汇总
设计模式
花好月圆春祺夏安20 小时前
基于odoo17的设计模式详解---单例模式
单例模式·设计模式
在未来等你1 天前
设计模式精讲 Day 22:模板方法模式(Template Method Pattern)
设计模式·模板方法模式·软件架构·java开发·面向对象设计·设计模式实战·java应用开发