首页 > 其他分享 >原型模式:通过复制生成实例

原型模式:通过复制生成实例

时间:2023-04-23 15:58:27浏览次数:37  
标签:name 对象 实例 原型 复制 Prototype public

原型模式允许对象在不重新创建的情况下通过复制来生成新的实例。这通常比直接创建一个新对象更加高效。简单来说,原型模式就是通过复制一个已有的对象来创建新的对象。

首先,我们需要定义一个实现Cloneable接口的原型类,以便使用clone()方法进行复制:

public class Prototype implements Cloneable {
    private String name;

    public Prototype(String name) {
        this.name = name;
    }

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

    public String getName() {
        return name;
    }

    @Override
    public Prototype clone() throws CloneNotSupportedException {
        return (Prototype) super.clone();
    }
}

使用该类创建一个示例对象,并将其复制成多个新对象:

public class Main {
    public static void main(String[] args) throws CloneNotSupportedException {
        // 创建一个原型对象
        Prototype prototype = new Prototype("原型对象");

        // 复制原型对象,创建新的对象
        Prototype clone1 = prototype.clone();
        Prototype clone2 = prototype.clone();
        
        // 修改新对象的属性
        clone1.setName("复制对象1");
        clone2.setName("复制对象2");

        // 输出结果
        System.out.println("原型对象:" + prototype.getName());
        System.out.println("复制对象1:" + clone1.getName());
        System.out.println("复制对象2:" + clone2.getName());
    }
}

标签:name,对象,实例,原型,复制,Prototype,public
From: https://www.cnblogs.com/li053/p/17346757.html

相关文章

  • redis,持久化RDB,AOF,混合(AOF),主从复制原理和方案,哨兵高可用
    内容回顾#悲观乐观锁: django中如何实现 -悲观锁:mysql行锁表锁-乐观锁:真正修改时,加入限制条件django中事务如何开启 -原生sql如何开启事务:begin;commit; -django中如何开事务:atomic()commit()for_update是锁表还是锁行如果查......
  • HTML5实现文件上传下载功能实例解析
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传  可以带参数        [HttpPost("upload")]        publicJsonResultuploadProject(I......
  • 建造者模式:组装复杂实例
    建造者模式的生命周期通常包括以下步骤:创建一个建造者对象调用该创建者对象的一系列设置方法,以指定对象的各个属性调用build()方法,该方法将运行实际的构建过程返回构建的对象建造者模式可以减少代码的重复性,并且可以简化创建复杂对象的过程,从而提高代码的可读性和可维护性......
  • 原型设计工具比较及实践
    目录一、原型设计工具比较1.墨刀2.Axure3.Mockplus二、原型设计1.主题名称2.功能3.界面设计考虑因素4.切换界面5.界面切换流程一、原型设计工具比较1.墨刀适用领域    墨刀是一款原型设计工具,借助墨刀可以简单的进行原型设计,它具有多人协作功能,能够多人合作,同时进......
  • Python类变量和实例变量,傻傻分不清楚
    今日鸡汤坐看云卷云舒,静听花开花落。大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群有个叫【Chloé】的粉丝问了一个关于Python类变量和实例变量的问题,这里拿出来给大家分享下,一起学习。这个粉丝在法国留学,所以提问是英文的,当然了英文看上去也不难,有点二级英文基......
  • JavaScript实现文件上传下载功能实例解析
    ​ 需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步:前端修改由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify......
  • 原型设计工具比较及实践
    目录一、原型设计工具比较1.墨刀2.Axure3.Mockplus二、原型设计实践1.主题名称2.功能3.界面设计考虑因素4.切换界面5.界面切换流程图6.界面交互演示一、原型设计工具比较1.墨刀适用领域     首先是国产的,是北京一家公司设计的。墨刀是一款在线原型设计与协同工具,借助墨......
  • JS实现文件上传下载功能实例解析.
    ​ 对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送、接收都是不可取,很容易导致内存问题。所以对于大文件上传,采用切块分段上传,从上传的效率来看,利用多线程并发上传能够达到最大效率。 本文是基于springboot+vue实现的文件上传,本文主要介绍服务端实现文件......
  • mysql+proxysql+replication-manager的主从半同步复制+高可用+读写分离
    环境:AlmaLinuxrelease9.1MySQLCommunityServerVer8.0.33ReplicationManagerv2.2.40forMariaDB10.xandMySQL5.7SeriesProxySQLversion2.5.1-90-gbedaa6c主机分配情况:采用hyper-v创建虚拟机的方式进行的,创建1台模板之后另外3台导入虚拟机复制。1、安装mysq......
  • 手把手教你进行Scrapy中item类的实例化操作
     接下来我们将在爬虫主体文件中对Item的值进行填充。1、首先在爬虫主体文件中将Item模块导入进来,如下图所示。2、第一步的意思是说将items.py中的ArticleItem类导入到爬虫主体文件中去,将两个文件串联起来,其中items.py的部分内容如下图所示。3、将这个ArticleItem类导入之后,接下来......