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

Prototype原型模式(对象创建)

原型模式:Prototype

链接:原型模式实例代码 + 注解

模式定义

使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。 ——《设计模式》GoF

目的

  • 在软件系统中,经常面临这“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口。
  • 如何应对这种变化?如何向“客户程序(使用这些对象的程序)”隔离出“这些易变对象”,从而使得依赖这些”易变对象“的客户程序不随着需求改变而改变。

P.s.

原型模式本质上也是类似于工厂模式的创建模式,我们先从

  • 底层结构上来看

    • 工厂是将创建新的对象这一子模块完全独立

    • 原型模式是将对象本身和创建它的接口耦合在一起

  • 从逻辑上来看

    • 工厂是只根据输入的初始化和默认参数来创建新的对象
    • 原型是根据已有的对象拷贝构造/克隆(深拷贝)一个状态一样的对象

从以上来看原型模式适用于对象内部复杂,初始化麻烦的情况。

:由于原型模式是加深了耦合,且必须有已有对象才能创建等诸多弊端,所以工厂模式在实际环境中使用的会更多。

要点总结

  • Prototype模式同样用于隔离对象的使用者和具体类型(易变类)之间的耦合关系,它同样要求这些“易变类”拥有稳定的接口。
  • Prototype模式对于“如何创建易变类的实体对象“采用”原型克隆“的方法来做, 它使得我们可以非常灵活地动态创建”拥有某些稳定接口“的新对象——所需工作仅仅是注册一个新类的对象(即原型), 然后在任何需要的地方Clone。
  • Prototype模式中的Clone方法可以利用某些框架中的序列化来实现深拷贝。

E.g
在这里插入图片描述

相关文章:

Prototype原型模式(对象创建)

原型模式:Prototype 链接:原型模式实例代码 注解 模式定义 使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。 ——《设计模式》GoF 目的 在软件系统中,经常面临这“某些结构复杂的对象”的创建工作&am…...

[Redis实战]分布式锁

四、分布式锁 4.1 基本原理和实现方式对比 分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行&#xf…...

SpingBoot的项目实战--模拟电商【2.登录】

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于SpringBoot电商项目的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.功能需求 二.代码编写 …...

http——https实现指南

第一部分:HTTPS安全证书简介 什么是HTTPS安全证书? 在网络通信中,HTTPS安全证书是一种由可信任的证书颁发机构(CA)签发的数字证书,用于保障网站与用户之间的数据传输安全。通过加密和身份验证&#xff0c…...

ROS仿真R2机器人之安装运行及MoveIt的介绍

R2(Robonaut 2)是NASA美国宇航局与GM通用联合推出的宇航人形机器人,能在国际空间站使用,可想而知其价格是非常昂贵,几百万美刀吧,还好NASA发布了一个R2机器人的Gazebo模型,使用模型就不需要花钱了,由于我们…...

【linux 多线程并发】线程属性设置与查看,绑定CPU,线程分离与可连接,避够多线程下的内存泄漏

线程属性设置 ​专栏内容: 参天引擎内核架构 本专栏一起来聊聊参天引擎内核架构,以及如何实现多机的数据库节点的多读多写,与传统主备,MPP的区别,技术难点的分析,数据元数据同步,多主节点的情况…...

70.乐理基础-打拍子-三连音

上一个内容:69.乐理基础-打拍子-大切分与变体-CSDN博客 62-66是总拍数为一拍的节奏型,一共有七个,68-69是两拍的节奏型。 三连音说明: 1.三连音的总拍数可以是一拍、两拍、四拍。。。。 2.打拍子比较难,或许需要用V字…...

100天精通Python(实用脚本篇)——第111天:批量将PDF转Word文档(附上脚本代码)

文章目录 专栏导读1. 将PDF转Word文档需求2. 模块安装3. 模块介绍4. 注意事项5. 完整代码实现6. 运行结果书籍推荐 专栏导读 🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教…...

如何在 NAS 上安装 ONLYOFFICE 文档?

文章作者:ajun 导览 ONLYOFFICE 文档 是一款开源办公套件,其是包含文本文档、电子表格、演示文稿、表单、PDF 查看器和转换工具的协作性编辑工具。它高度兼容微软 Office 格式,包括 .docx、.xlsx 、.pptx 、pdf等文件格式,并支持…...

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的图像剪切(ROI)功能(C++)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的图像剪切(ROI)功能(C) Baumer工业相机Baumer工业相机的图像剪切(ROI)功能的技术背景CameraExplorer如何使用图像剪切(ROI)功…...

从 WasmEdge 运行环境读写 Rust Wasm 应用的时序数据

WebAssembly (Wasm) 正在成为一个广受欢迎的编译目标,帮助开发者构建可迁移平台的应用。最近 Greptime 和 WasmEdge 协作,支持了在 WasmEdge 平台上的 Wasm 应用通过 MySQL 协议读写 GreptimeDB 中的时序数据。 什么是 WebAssembly WebAssembly 是一种…...

算法训练营Day34(贪心算法)

1005.K次取反后最大化的数组和 1005. K 次取反后最大化的数组和 - 力扣&#xff08;LeetCode&#xff09; 秒了 class Solution {public int largestSumAfterKNegations(int[] nums, int k) {Arrays.sort(nums);// -4 -3 -2 -1 5//-2 -2 0 2 5int last -1;for(int i 0;i<…...

uniapp:全局消息是推送,实现app在线更新,WebSocket,apk上传

全局消息是推送&#xff0c;实现app在线更新&#xff0c;WebSocket 1.在main.js中定义全局的WebSocket2.java后端建立和发送WebSocket3.通知所有用户更新 背景&#xff1a; 开发人员开发后app后打包成.apk文件&#xff0c;上传后通知厂区在线用户更新app。 那么没在线的怎么办&…...

ARM1.2作业

实现数码管不同位显示不同的数字 spi.h #ifndef __SPI_H__ #define __SPI_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h"//MOSI对应的引脚输入高低电平的信号PE14 #define MOSI_OUTPUT_H() do{GPIOE->ODR | (0x1 << 14);}whi…...

【算法专题】递归算法

递归 递归1. 汉诺塔问题2. 合并两个有序链表3. 反转链表4. 两两交换链表中的节点5. Pow(x, n) --- 快速幂 递归 在解决⼀个规模为 n 的问题时&#xff0c;如果满足以下条件&#xff0c;我们可以使用递归来解决&#xff1a; 问题可以被划分为规模更小的子问题&#xff0c;并且…...

不停止业务的情况下优化 Elasticsearch Reindex

在使用 Elasticsearch 时,我们总有需要修改索引映射的时候,这时我们只能进行 _reindex。事实上,这是一个相当昂贵的操作,因为根据数据量和分片数量,完整复制一个索引可能需要几个小时。 花费的时间不是大问题,但更严重的是,它会影响生产环境的性能甚至功能。 相信大家…...

PB 按Excel动态创建对应字段

/* > Function: w_cwjk_xhyy.wf_dw_init >-------------------------------------------------------------------- > 描述: 按excel表格列名,创建对应字段,用于部分接口对应字段导出文件 >-------------------------------------------------------------------- …...

数据结构——红黑树 and B-树

红黑树 根据平衡条件第4、5两点 最短路径&#xff0c;都是黑色 最长路径&#xff0c;红黑相间 最长是最短的两倍 B-树...

Android中线程间的通信-Handler

Handler机制在Android中主要用于线程间的通信&#xff0c;特别是处理从子线程向主线程&#xff08;UI线程&#xff09;传递消息和更新界面。 Handler中的四个关键对象及其作用&#xff1a; Message&#xff1a; Message 是在线程间传递的数据载体&#xff0c;它包含了需要处理…...

Spring Boot Admin健康检查引起的Spring Boot服务假死

问题现象 最近在spring boot项目中引入了 spring-boot-starter-actuator 后&#xff0c;测试环境开始出现服务假死的现象&#xff0c; 且这个问题十分怪异&#xff0c;只在多个微服务中的简称A的这个服务中出现&#xff0c;其他服务都没有出现这个问题&#xff0c; 之所以说…...

如何高效绘制专业电路图:Draw.io电子工程库完全指南

如何高效绘制专业电路图&#xff1a;Draw.io电子工程库完全指南 【免费下载链接】Draw-io-ECE Custom-made draw.io-shapes - in the form of an importable library - for drawing circuits and conceptual drawings in draw.io. 项目地址: https://gitcode.com/gh_mirrors/…...

别再傻傻分不清!5分钟搞懂NMOS和PMOS,从符号到选型一次讲透

5分钟掌握NMOS与PMOS实战技巧&#xff1a;从符号识别到精准选型 1. 初识MOS管&#xff1a;电子世界的交通警察 想象一下&#xff0c;你正面对一堆外形相似的MOS管&#xff0c;就像站在十字路口的交警&#xff0c;需要迅速判断每辆车的行驶方向。NMOS和PMOS正是电子电路中的&quo…...

叶绿体注释翻车实录:Geseq vs. NCBI格式差异与特殊基因处理实战

叶绿体注释翻车实录&#xff1a;Geseq vs. NCBI格式差异与特殊基因处理实战 当两个权威工具对同一段叶绿体DNA给出不同注释时&#xff0c;该相信谁&#xff1f;这个问题困扰过每一位从事基因组注释的研究者。去年在完成水稻叶绿体项目时&#xff0c;我同时用Geseq和NCBI标准流程…...

优化sVLM 的计算效率:轻量级注意力机制

在 sVLM 中&#xff0c;轻量级注意力机制的核心目标不是简单把模型做小&#xff0c;而是减少多模态推理中最贵的部分&#xff1a; 1. 视觉 token 太多 2. 图像 token 进入 LLM 后参与自注意力 3. 自注意力复杂度随序列长度近似 O(N) 4. 小模型虽然参数少&#xff0c;但视觉 tok…...

巨头转身难的地方,我们的星辰大海:开发版机巢,为千行百业而生

未来的低空经济图景是怎样的&#xff1f;它绝不仅仅是几架无人机在天上飞。 未来的城市与能源基础设施中&#xff0c;将隐藏着无数形态各异、能力专精的“机巢”。它们将像毛细血管一样渗透在城市的各个角落&#xff0c;定时自动穿梭&#xff0c;替代人力进行精细化巡检&#x…...

保姆级教程:用LabVIEW 2023给CANoe做个外挂,实现硬件数据采集与自动化测试

保姆级教程&#xff1a;用LabVIEW 2023给CANoe做个外挂&#xff0c;实现硬件数据采集与自动化测试 在汽车电子测试领域&#xff0c;工程师们常常面临一个核心矛盾&#xff1a;CANoe作为行业标准的总线仿真工具提供了强大的协议分析和测试管理能力&#xff0c;但在面对非标硬件接…...

0403开源:第四卷光刻机整机控制与量检测系统(A级 中期集中攻坚)3. 开源纳米级计量检测设备卡点

开源光刻机整机控制与量检测系统&#xff08;A级 中期集中攻坚&#xff09; 3. 开源纳米级计量检测设备卡点&#xff08;全参数开源硬核壁垒拆解喂饭级溯源破局&#xff09; 前置开源声明 本节全程无保留开源光刻量检测底层原理、设备架构、纳米级计量阈值、国内外参数对标、核…...

STM32CubeMX实战指南:ADC多通道扫描与DMA传输配置

1. ADC多通道扫描与DMA传输的核心价值 第一次用STM32做多路传感器采集时&#xff0c;我像大多数新手一样傻傻地用轮询方式读取每个ADC通道。结果发现CPU利用率直接飙到80%&#xff0c;系统卡得连LED灯都闪不利索。后来工程师老张甩给我一句话&#xff1a;"用DMA啊&#xf…...

基于MCP协议构建AI智能体记忆系统:mnemo-mcp实战指南

1. 项目概述&#xff1a;一个为AI记忆而生的开源工具最近在折腾AI应用开发&#xff0c;特别是围绕大语言模型&#xff08;LLM&#xff09;构建智能体&#xff08;Agent&#xff09;时&#xff0c;一个绕不开的痛点就是“记忆”。模型本身没有持久化记忆&#xff0c;每次对话都是…...

别浪费了STM32F103C8T6的PA13和PA14!SWD下载后,教你一键解锁这两个GPIO

解锁STM32F103C8T6的PA13/PA14引脚&#xff1a;从SWD调试到GPIO复用的实战指南 刚拿到STM32F103C8T6核心板时&#xff0c;很多开发者会对着有限的引脚发愁——尤其是那些标着"SWDIO"和"SWCLK"的PA13/PA14引脚。难道这两个引脚只能永远被调试接口占用&#…...