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

创建型模式 - 原型模式 (Prototype Pattern)

创建型模式 -原型模式 (Prototype Pattern)

它允许通过复制现有对象来创建新对象,而无需知道对象的具体创建细节。在 Java 中,可以通过实现 Cloneable 接口和重写 clone() 方法来实现原型模式。


  • 有深、浅两种克隆
    • 类实现 Cloneable 接口就可以深克隆
    • 如果类中又包含了引用类型对象,这部分将不能被深克隆,会变成浅克隆
      • 什么意思呢? 举例一个 Box 类, 类里面引用了 SubBox 类, 当 Box 被克隆的时候, SubBox 引用的是同一个对象
      	public class Box implements Cloneable {private String name;private String color;private Double width;// 引用类型, 指的是这部分只会被浅克隆private SubBox subBox; // 那么怎么解决这种包含引用对象也深克隆呢? // 可以采用序列化写入成文件, 再反序列化转回来成对象,也能达到连引用类型也深克隆的效果// 就像前端 JavaScript 对象,你应该没少写把对象转成 JSON 字符串再转回来,来达成深克隆}```

// 定义可克隆的形状类
class Shape implements Cloneable {private String type;public Shape(String type) {this.type = type;}public String getType() {return type;}// 重写 clone 方法@Overridepublic Object clone() {try {return super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();return null;}}
}// 客户端代码
public class PrototypePatternExample {public static void main(String[] args) {// 创建原始形状对象Shape originalShape = new Shape("Circle");// 克隆形状对象Shape clonedShape = (Shape) originalShape.clone();System.out.println("Original Shape Type: " + originalShape.getType());System.out.println("Cloned Shape Type: " + clonedShape.getType());}
}

相关文章:

创建型模式 - 原型模式 (Prototype Pattern)

创建型模式 -原型模式 (Prototype Pattern) 它允许通过复制现有对象来创建新对象,而无需知道对象的具体创建细节。在 Java 中,可以通过实现 Cloneable 接口和重写 clone() 方法来实现原型模式。 有深、浅两种克隆 类实现 Cloneable 接口就可以深克隆如果…...

Android 8.0 (API 26) 对广播机制做了哪些变化

大部分隐式广播无法通过静态注册接收,除了以下白名单广播: ACTION_BOOT_COMPLETED ACTION_TIMEZONE_CHANGED ACTION_LOCALE_CHANGED ACTION_MY_PACKAGE_REPLACED ACTION_PACKAGE_ADDED ACTION_PACKAGE_REMOVED 需要以动态注册方案替换: cl…...

Unity汽车笔记

汽车的移动和转向 我们知道,汽车的前进后退是变速运动。按w,汽车开始加速,到最大速度后保持匀速,松开w,汽车受到阻力加速。如果按s减速,则以更大的加速度减速。后退反之。 按A/D时前轮偏转。只有前进后退…...

html中rel、href、src、url的区别

1.url url(统一资源定位符):是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。 2.href href:Hypertext Reference的缩写。 意思是超文本引用。 3.rel rel:relatio…...

【idea问题排查技巧】

以下是针对 IDEA 中 日志打标(动态标记) 和 全链路追踪 功能的分步详解,结合具体场景和操作截图说明,帮助快速掌握实战技巧。 一、动态日志打标:不修改代码输出关键信息 1. 断点日志打印(非侵入式打标) 场景:在调试时,需要临时查看某个变量的值,但不想修改代码添加…...

SQL: DDL,DML,DCL,DTL,TCL,

Structured Query Language,结构化查询语言, 是一种用于管理和操作关系数据库的标准编程语言。 sql的分类 DQL(Data Query Language):数据查询语言 DDL(Data Definition Language):数据定义语…...

WordPress R+L Carrier Edition sql注入漏洞复现(CVE-2024-13481)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...

DeepSeek基础之机器学习

文章目录 一、核心概念总结(一)机器学习基本定义(二)基本术语(三)假设空间(四)归纳偏好(五)“没有免费的午餐”定理(NFL 定理) 二、重…...

QSplashScreen --软件启动前的交互

目录 QSplashScreen 类介绍 使用方式 项目中使用 THPrinterSplashScreen头文件 THPrinterSplashScreen实现代码 使用代码 使用效果 QSplashScreen 类介绍 QSplashScreen 是 Qt 中的一个类,用于显示启动画面。它通常在应用程序启动时显示,以向用户显…...

Python 循环嵌套

Python 循环嵌套 引言 在编程语言中,循环嵌套是一种常见且强大的编程技术。它允许开发者重复执行一段代码块,并在每个循环迭代中执行另一个循环。在Python中,循环嵌套广泛应用于数据分析和算法实现等领域。本文将详细介绍Python循环嵌套的概念、语法以及应用场景。 循环嵌…...

性能测试项目实战

项目介绍和部署 项目背景 轻商城项目是一个现在流行的电商项目。我们需要综合评估该项目中各个关键接口的性能,并给出优化建议,以满足项目上线后的性能需要。 项目功能架构 前台商城:购物车、订单、支付、优惠券等 后台管理系统:商…...

Web自动化之Selenium实战案例2:东方财富网股吧评论爬取

上一篇文章,我们使用Selenium完成了网页内文件的自动下载,本文我们将使用Selenium来爬取东方财富网股吧内笔记的评论数据。 网页内容分析 网页内容的分析是web自动化中的关键一步。通过分析网页结构,我们可以确定需要抓取的数据位置以及操作元素的方式。…...

【Java八股文】09-计算机操作系统面试篇

文章目录 计算机操作系统面试篇用户态和内核态的区别?用户态和内核态的区别? 进程管理线程和进程的区别是什么?进程,线程,协程的区别是什么?创建一个协程的过程线程运行过程中申请到的东西在切换时是否全部…...

【Redis】在Java中以及Spring环境下操作Redis

Java环境下&#xff1a; 1.创建maven 项目 2.导入依赖 <!-- redis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.3.2</version></dependency> 此处使用的是Jedis&…...

MFC—加法器

1.需要为编辑框添加变量 2.在cpp文件中的按钮中添加代码 void CMFCAddtionDlg::OnBnClickedButton1() {// TODO: 在此添加控件通知处理程序代码UpdateData(true);//把控件里的值更新给变量m_add m_add1 m_add2;//加法UpdateData(false);//把控件相加的值赋值给控件 }...

SpringBoot五:Web开发

精心整理了最新的面试资料&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 要解决的问题 导入静态资源首页jsp&#xff0c;模板引擎Thymeleaf装配扩展SpringMVC增删改查拦截器国际化&#xff08;非重点&#xff09; 可以使用以下方式处理静态…...

电机控制的空间矢量调制 (SVPWM)

目录 概述 1 电机控制的空间矢量调制 (SVPWM)介绍 2 实现原理 2.1 设计要求 2.2 SVPWM 的实现 3 SVPWM的C语言 3.1 代码文件 3.2 STM32G4平台上验证 4 源代码文件 概述 本文主要介绍电机控制的空间矢量调制 (SVPWM)&#xff0c;空间矢量调制 (SVPWM) 是感应电机和永磁…...

jupyterhub on k8s 配置用户名密码 简单版

如果只是小组内使用 不想共用密码 也不想搞复杂认证方案 那么就直接通过map(用户名,密码md5值)来制定密码 config.yaml部分内容 hub:config:JupyterHub:shutdown_on_logout: true # 用户logout 自动stop jupyter pod,家目录下所有文件会被保存到pvc 即启动后之前家目录下…...

c++笔试准备

一、 输入输出 1.多组数据【while】 cin #include <iostream> using namespace std;int main() {int a, b;while (cin >> a >> b) { // 当读取到EOF时&#xff0c;循环自动终止cout << a b << endl;}return 0; }getline #include <iostrea…...

【Docker】如何在Linux、Windows、MacOS中安装Docker

Linux安装Docker 在终端中执行一键安装脚本命令安装dockersudo curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh | bash -s docker --mirror Aliyun1.1 配置docker镜像源 在终端执行 一行命令,编辑配置文件sudo tee /etc/docke…...

MedGemma Medical Vision Lab效果展示:病理切片WSI低倍镜下肿瘤区域与淋巴细胞浸润密度文本评估

MedGemma Medical Vision Lab效果展示&#xff1a;病理切片WSI低倍镜下肿瘤区域与淋巴细胞浸润密度文本评估 1. 引言&#xff1a;当AI遇见病理切片分析 病理切片分析是医学诊断中的重要环节&#xff0c;但传统的人工分析方式存在效率低、主观性强等挑战。今天我们要展示的Med…...

Fastjson的AutoType:从‘得力助手’到‘安全噩梦’,我们该如何用SafeMode优雅收场?

Fastjson的AutoType&#xff1a;从‘得力助手’到‘安全噩梦’&#xff0c;我们该如何用SafeMode优雅收场&#xff1f; 在Java生态中&#xff0c;Fastjson以其卓越的性能和简洁的API长期占据JSON处理库的榜首。但近年来&#xff0c;这个明星库却因为一个名为AutoType的特性频频…...

Netflix四月底推重新设计移动应用,竖版视频流能否拓展娱乐新体验?

Netflix移动应用四月底焕新&#xff0c;竖版视频流登场 Netflix于周四宣布&#xff0c;将在四月底推出重新设计的移动应用程序&#xff0c;其中一大亮点是包含竖版视频流。该公司在2026年第一季度致股东的财报信中提及&#xff0c;此次重新设计旨在更好地体现不断拓展的娱乐内容…...

无需多软件切换, 实现文档、表格、协作工具一体化

前言 每天在办公室里处理各种文件&#xff0c;打开 Word 写文档、切到 Excel 做表格、再开一个窗口做 PPT&#xff0c;中间还要穿插着局域网聊天、思维导图整理思路&#xff0c;白板讨论完还要手动整理纪要。一台电脑屏幕上开满了窗口&#xff0c;任务栏挤得密密麻麻&#xff…...

AI辅助排版:设计领域的应用方法与落地实践

数字化内容生产节奏不断加快&#xff0c;品牌方对内容输出的频率和质量要求同步提升。不少中小设计团队因为排版效率不足&#xff0c;无法承接高频次的内容输出需求。特别是电商大促节点&#xff0c;不少中小团队一周要承接近百套商品详情页、平台活动海报、新媒体种草内容的排…...

终极指南:使用Jsxer快速解密Adobe JSXBIN文件

终极指南&#xff1a;使用Jsxer快速解密Adobe JSXBIN文件 【免费下载链接】jsxer A fast and accurate JSXBIN decompiler. 项目地址: https://gitcode.com/gh_mirrors/js/jsxer 你是否曾经遇到过以JSXBIN开头的Adobe脚本文件&#xff0c;想要查看或修改其内部逻辑却无从…...

告别重复图片困扰:AntiDupl.NET帮你智能清理硬盘空间 [特殊字符]️

告别重复图片困扰&#xff1a;AntiDupl.NET帮你智能清理硬盘空间 &#x1f5bc;️ 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 你是否曾经在整理照片时发现同一张图…...

Postman接口测试黑马点评项目:手把手教你搞定登录鉴权与Stream订单流

Postman接口测试黑马点评项目&#xff1a;手把手教你搞定登录鉴权与Stream订单流 在当今互联网应用中&#xff0c;接口测试已成为保障系统稳定性的关键环节。黑马点评&#xff08;hm-dianping&#xff09;作为一款基于Redis的实战项目&#xff0c;其独特的JWT鉴权机制和Redis S…...

深入浅出SVPWM:在STM32F103上用手写代码理解同步电机驱动的核心算法

深入浅出SVPWM&#xff1a;在STM32F103上用手写代码理解同步电机驱动的核心算法 第一次接触SVPWM时&#xff0c;我被那些复杂的数学推导和坐标变换搞得晕头转向。直到有一天&#xff0c;我决定抛开那些晦涩的公式&#xff0c;直接从代码层面理解这个算法的本质。本文将带你用ST…...

百度网盘秒传工具终极指南:快速转存与高效分享完整教程

百度网盘秒传工具终极指南&#xff1a;快速转存与高效分享完整教程 【免费下载链接】baidupan-rapidupload 百度网盘秒传链接转存/生成/转换 网页工具 (全平台可用) 项目地址: https://gitcode.com/gh_mirrors/bai/baidupan-rapidupload 百度网盘秒传工具是一款基于浏览…...