当前位置: 首页 > news >正文

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

原型模式

  • 描述
    • 基本使用
  • 使用场景

描述

基于已有对象,利用JDK的Cloneable接口,生成一个新的对象。
常用于需要同时创建多个对象的场景
默认的clone是浅拷贝,如果要实现深拷贝需自行处理

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

基本使用

  • 声明一个实现Cloneable的类
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);
        }
    }
}


  • 使用
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方式
否则直接构建基础对象

相关文章:

  • Qt音频采集:QAudioInput详解与示例
  • Android打包及上架应用市场问题处理
  • vue-axios跨域问题
  • 利用CNN卷积神经网络进行声呐图像分类
  • STM32常用外设寄存器介绍
  • golang并发原语groutine channel select sync包
  • vue2打包部署到nginx,解决路由history模式下页面空白问题
  • C++ —— 文件操作(流式操作)
  • Linux服务宕机,java服务导致的内存溢出
  • 公有云子账号认证的原理和步骤
  • 第十六章:向微服务迈进_《凤凰架构:构建可靠的大型分布式系统》
  • linux提权 corn 提权
  • 集成电流电压和功率采样输出的芯片
  • 字符串、列表、元组、字典
  • 学透Spring Boot — 017. 魔术师—Http消息转换器
  • C++中高精度运算问题
  • QT工程建立
  • JavaWeb餐厅点餐系统
  • c++中虚函数(virtual),重写(override),多态(重点介绍动态多态)
  • 《野史未必假》王磊
  • 网站建设 免费视频/广州网络推广公司有哪些
  • 做一个配送网站/seo优化网站的手段
  • 政府网站建设管理工作会议/最近一周国内热点新闻
  • 网站返回500错误页面/如何做好宣传推广
  • 昆山普立斯特做的有网站/软件推广的渠道是哪里找的
  • 百度上怎么制作自己的网站/关键词排名点击软件工具