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

一句话设计模式2:原型模式

原型模式:每次得到一个新对象。


文章目录

  • 原型模式:每次得到一个新对象。
  • 前言
  • 一、原型模式和new的区别
  • 二、如何实现原型模式
    • 1. 什么clone接口
    • 2. 开始使用,并验证浅clone效果
    • 3. 深度clone(也就是address也要复制一份)
  • 总结


前言

原型模式可以说是目前接触的设计模式中,比较无用的一种;一般用于快速复制已有对象,性能不错;


一、原型模式和new的区别

原型模式相当于在已有的对象上,复制一份,复制的时候,对象中的各个属性值都复制,如果属性也是一个对象,那么深度复制的情况下(深clone),也要复制一份;
new 仅仅是初始化一个对象,其中的属性的值若没有默认,则目前都为空值;

二、如何实现原型模式

与其说是实现原型模式,不如说是如何使用Cloneable 接口,因为Cloneable 接口就是原型模式的基础

1. 什么clone接口

这个是jdk自带的用于复制对象的接口,所有的对象都可以实现这个接口,然后用于对象复制,也就是原型模式的实现

相关文章:

一句话设计模式2:原型模式

原型模式:每次得到一个新对象。 文章目录 原型模式:每次得到一个新对象。前言一、原型模式和new的区别二、如何实现原型模式1. 什么clone接口2. 开始使用,并验证浅clone效果3. 深度clone(也就是address也要复制一份)总结前言 原型模式可以说是目前接触的设计模式中,比较无用的…...

c++11特性与c++17特性

1、自动类型推导auto // C11 auto func1() -> int // 需要指定返回值类型 {return 10; }auto func2() -> std::function<void()> {auto lambda []() { };return lambda; }// c17 // 之后无需指定返回值类型 auto func1() {return 10; }auto func2() {auto lambda…...

Redis02: Redis基础命令

一、基础命令 先启动redis服务&#xff0c;使用redis-cli客户端连到redis数据库里面 1. 获取符合规则的键: keys 要点&#xff1a; &#xff08;1&#xff09;keys 后面可以指定正则表达式 &#xff08;2&#xff09;在生产环境下建议禁用keys命令&#xff0c;因为这个命令会查…...

MDK的HardFault硬件异常和NMI异常原因总结

发出来&#xff0c;出现问题自行比对&#xff0c;现在一些代码&#xff0c;也会对这个进行分析。硬件异常原因&#xff1a; Unaligned load or store Load 或者 store 指令访问未对齐地址 Undefined Instruction 执行 ARM 未定义的指令 EPSR Fault 当前程序没有在 Thumb 状态下…...

视频图像质量诊断

视频图像质量诊断有哪些原理&#xff0c;视频图像质量诊断有哪些算法&#xff1f; 视频图像质量诊断技术支持对视频黑屏、视频干扰、视频卡顿、视频遮挡、亮度异常、图像偏色、视频模糊、视频冻结、视频抖动、场景变更、无字符叠加等20种视频图像质量异常进行诊断&#xff0c;…...

make、Makefile项目自动化构建工具

环境&#xff1a;centos7.6&#xff0c;腾讯云服务器Linux文章都放在了专栏&#xff1a;【Linux】欢迎支持订阅&#x1f339;前言自动化构建工具是干什么的呢&#xff1f;主要是为了让我们对指令进行一些设置&#xff0c;就比如说&#xff0c;假如一个项目里有很多个源文件&…...

Linux系统之Uboot、Kernel、Busybox思考之一

目录 一 基础环境 1 硬件基础环境 2 软件基础环境 2.1 Uboot 2.2 内核 2.3 文件系统 二 启动过程 1 2 3 4 5 6 7 一 基础环境 1 硬件基础环境 CPU、内存和FLASH为基础环境&#xff0c;有了这三样&#xff0c;程序就可以跑起来。在此基础上补充各种外设&#xff…...

CCNP350-401学习笔记(401-450题)

401、What is the function of vBond in a Cisco SDWAN deployment? A. initiating connections with SD-WAN routers automatically B. pushing of configuration toward SD-WAN routersC. onboarding of SDWAN routers into the SD-WAN overlay D. gathering telemetry dat…...

一文带你看透前端世界里的日期时间,对就是Date

很高兴我们能够通过不同空间&#xff0c;不同时间&#xff0c;通过这篇博客相识&#xff0c;那一定是一种缘分&#xff0c;一种你和狗哥的缘分。今天我希望通过这篇博客对我所熟知的前端世界里的日期时间做一个汇总&#xff0c;不止是代码上的汇总哦&#xff01; 目录 一、时区…...

易基因|RRBS单碱基绘制580种动物的基因组规模DNA甲基化谱:Nature子刊

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。2023年01月16日&#xff0c;奥地利科学院分子医学研究中心(CeMM)研究团队在《Nat Commun》杂志发表了题为“Comparative analysis of genome-scale, base-resolution DNA methylation prof…...

面试官:能用JavaScript手写一个bind函数吗

经常会看到网上各种手写bind的教程&#xff0c;下面是我在自己实现手写bind的过程中遇到的问题与思考。如果对于如何实现一个手写bind还有疑惑的话&#xff0c;那么可以先看看上面两篇文章。 手写bind vs 原生bind 我们先使用一个典型的手写bind的例子&#xff0c;代码如下&a…...

美国拟发布纽扣电池或硬币电池安全标准和通知要求ANSI C18. 3M

2023年2月10日&#xff0c;美国向WTO提交G/TBT/N/USA/1964号通报&#xff0c;拟发布纽扣电池或硬币电池以及含有此类电池的消费品的安全标准和通知要求&#xff0c;征求意见截止日期为2023年3月13日&#xff0c;拟通过日期和生效日期待定。联[1]系 拟定规则通知根据H.R.5313瑞…...

双因素方差分析

一、案例与数据 一家大型商业银行在多地区设有分行&#xff0c;其业务主要是进行基础设施建设&#xff0c;国家重点项目建设&#xff0c;固定资产投资等项目的贷款。近年来&#xff0c;该银行的贷款额平稳增长&#xff0c;但不良贷款额也有较大比例的提高&#xff0c;这给银行…...

[ vulhub漏洞复现篇 ] Drupal XSS漏洞 (CVE-2019-6341)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…...

「TCG 规范解读」第8章 TPM工作组 TPM 1.2中 SHA1的使用

可信计算组织&#xff08;Ttrusted Computing Group,TCG&#xff09;是一个非盈利的工业标准组织&#xff0c;它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立&#xff0c;并采纳了由可信计算平台联盟&#xff08;the Trusted Computing Platform Alli…...

熵权法计算权重

文章目录1. 多属性决策问题2. 熵&#xff08;entropy&#xff09;3. 信息熵4. 熵权法5. 熵权法的实现基于信息论的熵值法是根据各指标所含信息有序程度的差异性来确定指标权重的客观赋权方法&#xff0c;仅依赖于数据本身的离散程度。熵用于度量不确定性&#xff0c;指标的离散…...

redis实现用户签到,统计活跃用户,用户在线状态,用户留存率

开发的过程中&#xff0c;可能会遇到用户签到、统计当天的活跃用户、以及每个用户的在线状态&#xff0c;用户留存率的开发需求&#xff0c;可能会用传统的方法&#xff0c;根据相应的需求设计数据库表等&#xff0c;但这样耗费的存储空间大&#xff0c;以及性能方面也不会太好…...

MySQL中有多少种索引?索引的底层实现原理

索引存储在内存中&#xff0c;为服务器存储引擎为了快速找到记录的一种数据结构。索引的主要作用是加快数据查找速度&#xff0c;提高数据库的性能。索引的分类(1) 普通索引&#xff1a;最基本的索引&#xff0c;它没有任何限制。(2) 唯一索引&#xff1a;与普通索引类似&#…...

LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解

LeetCode经典算法题&#xff1a;二叉树遍历&#xff08;递归遍历迭代遍历层序遍历&#xff09;以及线索二叉树java详解 文章目录二叉树遍历题目描述解题思路与代码递归遍历迭代遍历层序遍历线索二叉树&#xff1a;二叉树遍历 题目描述 从根节点往下查找&#xff0c;先找左子树…...

【Java闭关修炼】MyBatis-接口代理的方式实现Dao层

【Java闭关修炼】MyBatis-接口代理的方式实现Dao层实现规则代码实现代理对象分析接口代理方式小结实现规则 映射配置文件中的名称空间必须和Dao层接口的全类名相同映射配置文件的增删改查标签的id属性必须和Dao层接口方法的参数相同映射配置文件中的增删改查标签的parameterTyp…...

Origin绘图进阶:如何在现有图形上叠加散点图与等高线(附MATLAB对比)

Origin数据可视化进阶&#xff1a;多层图表叠加与等高线绘制实战 科研图表的美观性与信息密度往往决定了研究成果的呈现效果。作为一款专业的数据分析与可视化工具&#xff0c;Origin在复杂图表叠加方面展现出独特优势&#xff0c;尤其适合需要同时展示散点分布与等高线趋势的科…...

实战向 Python 汽车推荐系统 Django框架 可视化 协同过滤算法 数据分析 大数据 机器学习(建议收藏)✅

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ > &#x1f345;想要获取完整文章或者源码&#xff0c;或者代做&#xff0c;拉到文章底部即可与…...

比特币钱包恢复工具btcrecover:从原理到实践的开源解决方案

比特币钱包恢复工具btcrecover&#xff1a;从原理到实践的开源解决方案 【免费下载链接】btcrecover An open source Bitcoin wallet password and seed recovery tool designed for the case where you already know most of your password/seed, but need assistance in tryi…...

别再只用Whisper了!WhisperX + Python 实战:如何为3分钟视频批量ASR搭建高效处理流水线

WhisperX Python 实战&#xff1a;构建高吞吐量语音识别流水线的工程实践 在音视频内容爆炸式增长的时代&#xff0c;语音识别技术已成为内容生产、知识管理、数字营销等领域的基础设施。当处理规模从单个文件扩展到数百小时的音视频素材时&#xff0c;传统单次处理模式显露出…...

如何用Marzipano构建高性能360度全景图应用?

如何用Marzipano构建高性能360度全景图应用&#xff1f; 【免费下载链接】marzipano A 360 media viewer for the modern web. 项目地址: https://gitcode.com/gh_mirrors/ma/marzipano Marzipano是一个由Google开发的现代Web 360度媒体查看器&#xff0c;专为构建沉浸式…...

从无人机到扫地机器人:拆解VIO技术如何成为智能设备的‘隐形大脑’

从无人机到扫地机器人&#xff1a;拆解VIO技术如何成为智能设备的‘隐形大脑’ 当科沃斯T20扫地机器人在复杂家居环境中精准避开宠物食盆时&#xff0c;当大疆Mavic 3无人机在峡谷间自主返航时&#xff0c;背后都隐藏着一项关键技术——视觉惯性里程计&#xff08;VIO&#xff…...

从真题到实战:拆解CCF-GESP C++三级核心考点与避坑指南

1. 数据编码&#xff1a;从ASCII到UTF-8的实战解析 在CCF-GESP C三级考试中&#xff0c;数据编码是必考的核心知识点。很多同学第一次接触这个概念时容易懵圈——不就是存个字符吗&#xff0c;怎么还有这么多门道&#xff1f;其实理解编码就像学外语&#xff0c;ASCII是基础英语…...

OpenStack Train版三节点部署全攻略:从CentOS 7.6配置到Dashboard上线

OpenStack Train版三节点部署实战&#xff1a;从CentOS 7.6到Dashboard的完整指南 当企业需要构建私有云平台时&#xff0c;OpenStack作为最成熟的开源IaaS解决方案之一&#xff0c;其灵活性和可扩展性备受青睐。本文将带您完成一个生产级的三节点OpenStack Train版部署&#x…...

告别编译报错!手把手教你用Keil MDK5搭建GD32F103开发环境(含AC5编译器配置)

告别编译报错&#xff01;手把手教你用Keil MDK5搭建GD32F103开发环境&#xff08;含AC5编译器配置&#xff09; 嵌入式开发新手在初次接触GD32F103时&#xff0c;往往会被各种编译报错搞得焦头烂额。特别是从STM32转过来的开发者&#xff0c;本以为操作流程相似&#xff0c;结…...

AI教材写作新趋势,低查重助力高效教材编写!

编写痛点与AI解法 整理教材的知识点简直就是一项“精细的工作”&#xff0c;其难点在于如何保持平衡与衔接性&#xff01;要么令人担忧的是核心知识点的遗漏&#xff0c;要么把握不好难度的层次——小学教材往往深奥&#xff0c;让学生难以理解&#xff1b;高中教材却又过于浅…...