《golang设计模式》第一部分·创建型模式-02-原型模式(Prototype)
文章目录
- 1. 概念
- 1.1 简述
- 1.2 角色
- 1.3 类图
- 2. 代码示例
- 2.1 设计
- 2.2 代码
- 2.3 类图
1. 概念
1.1 简述
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
1.2 角色
- Prototype(抽象原型类):它是声明克隆方法的接口,或所有具体原型类的公共父类
它可以是抽象类也可以是接口,甚至还可以是具体实现类。
- ConcretePrototype(具体原型类):它实现在抽象原型类中声明的克隆方法,在克隆方法中返回自己的一个克隆对象。
- Client(客户类):
让一个原型对象克隆自身从而创建一个新的对象,只需要直接实例化或通过工厂方法等方式创建一个原型对象,再通过调用该对象的克隆方法即可得到多个相同的对象。
1.3 类图
2. 代码示例
2.1 设计
- 创建一个
将军类- 它有4个方法:
设置人员信息、设置装备、查询、克隆
- 它有4个方法:
- 调用
- 实例化一个将军
关羽 - 用
关羽的克隆方法实例化继承人 - 用
继承人的设置人员信息方法修改继承人的信息
- 实例化一个将军
2.2 代码
package mainimport "fmt"// 定义抽象原型
type Prototype interface {Clone() Prototype
}
//定义具体原型
type ConcretePrototype struct {Name stringModelA stringModelB string
}func (c *ConcretePrototype) Clone() Prototype {pN := &ConcretePrototype{Name: c.Name,ModelA: c.ModelA,ModelB: c.ModelB,}return pN
}func main() {//实例化一个原型prototype := &ConcretePrototype{Name: "liubei",ModelA: "AAA",ModelB: "BBB",}//用原型复制两个实例cloneA := prototype.Clone()cloneB := prototype.Clone()//查看结果fmt.Println(cloneA, cloneB)
}
2.3 类图

相关文章:
《golang设计模式》第一部分·创建型模式-02-原型模式(Prototype)
文章目录 1. 概念1.1 简述1.2 角色1.3 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概念 1.1 简述 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 1.2 角色 Prototype(抽象原型类):它是声明克隆方法的接口…...
SpringCloudAlibaba微服务实战系列(一)Nacos服务注册发现
SpringCloudAlibaba微服务实战系列(一)Nacos服务注册发现 实战前先做一个背景了解。 单体架构、SOA和微服务 单体架构:近几年技术的飞速发展,各种各样的服务已经进入到网络化。单体架构发布时只需要打成一个war或jar包发布即可&a…...
23.7.27 牛客暑期多校4部分题解
1010 - Kong Ming Qi 1005 - Data Generation 题意、思路待补 code #include <bits/stdc.h> using namespace std; const long long MOD 998244353; int t; long long n, m; long long sub(long long a, long long b) {return a - b < 0 ? a - b MOD : a - b;}…...
Ubuntu 20.04 安装教程
最近貌似很多同学都在下载 ubuntu 虚拟机,但网上很多的安装教程不是很全,所以今天重新更新一下这篇博文(更新日期:2022.12.3),希望能帮到大家。除此之外,安装过程确实比较繁琐,可能会…...
如何评判算法好坏?复杂度深度解析
如何评判算法好坏?复杂度深度解析 1. 算法效率1.1 如何衡量一个算法好坏1.2 算法的复杂度 2 时间复杂度2.1 时间复杂度的概念2.1.1 实例 2.2 大O的渐进表示法2.3 常见时间复杂度计算举例 3 空间复杂度4 常见复杂度对比5 结尾 1. 算法效率 1.1 如何衡量一个算法好坏 …...
【HashMap】2352. 相等行列对
2352. 相等行列对 解题思路 使用哈希容器遍历grid数组 将每一行的字符全部转换为StringBuilde对象 然后存入map中遍历每一列 将其转换为字符串 然后查找Map中是否存在 如果存在 统计 class Solution {public int equalPairs(int[][] grid) {// 哈希容器Map<String,Intege…...
如何声明静态方法 和 实现?
如何声明静态方法 和 实现?在 C 中,声明和实现静态方法(静态成员函数)与普通成员函数有一些区别。静态方法属于类本身,而不是类的对象,因此在声明和实现时需要特殊的语法。 声明静态方法: 在类…...
哈工大计算机网络课程局域网详解之:无线局域网
哈工大计算机网络课程局域网详解之:无线局域网 文章目录 哈工大计算机网络课程局域网详解之:无线局域网IEEE 802.11无线局域网802.11体系结构802.11:信道与AP关联 本节介绍一下平时经常使用的一个无线局域网技术,也就是通常我们使…...
系统集成|第六章(笔记)
目录 第六章、整体管理6.1 项目整体管理概述6.2 主要过程6.2.1 制订项目章程6.2.2 制订项目管理计划6.2.3 指导与管理项目工作6.2.4 监控项目工作6.2.5 实施整体变更控制6.2.6 结束项目或阶段 上篇:第五章、立项管理 第六章、整体管理 6.1 项目整体管理概述 概述&a…...
MySQL主从复制环境部署
文章目录 MySQL主从复制什么是主从复制:为什么需要主从复制:配置文件修改-主:时间同步:重启服务-主:创建同步用户:查看主上的二进制文件名及位置:配置-从:测试:注: MySQL…...
day42-servlet下拉查询/单例模式
0目录 1.Servlet实现下拉查询(两表) 2.单例模式 1.实战 1.1 创建工程,准备环境... 1.2 接口 1.3 重写方法 1.4 servlet 1.5 list.jsp list.jsp详解 2.单例模式 2.1 饿汉模式:在程序加载时直接创建对象&#…...
docker中设置容器健康检查
文章目录 一、docker-compose方式二、Dockerfile方式三、docker run方式四、查看检查日志 一、docker-compose方式 在docker-compose中加入healthcheck healthcheck 支持下列选项: test:健康检查命令,例如 ["CMD", "curl&quo…...
azure-cognitiveservices-speech api error while using with AWS Lambda
Azure 语音评估服务 Cancellation Reason 初始化平台失败 1.在mac上安装 pip install azure-cognitiveservices-speech1.30.0正常运行没有问题,服务部署到docker 容器中后调用Azure语音评估服务报错 Cancellation Reason 初始化平台失败 2.解决方案,变…...
系统集成项目管理工程师挣值分析笔记大全
系统集成项目管理工程师挣值分析笔记大全 挣值分析是一种项目管理技术,用于量化和监控项目绩效。它通过比较计划值(PV)、实际成本(AC)和挣值(EV)三个参数来评估项目的进展情况和成本绩效。 挣值…...
TCP 协议【传输层协议】
文章目录 1. 简介1.1 TCP 协议是什么1.2 TCP 协议的作用1.3 什么是“面向连接” 2. 简述 TCP2.1 封装和解包2.2 TCP 报文格式2.3 什么是“面向字节流”2.4 通过 ACK 机制实现一定可靠性 3. 详述 TCP3.1 基本认识TCP 报头格式16 位源/目标端口号32 位序列号*32 位确认应答号4 位…...
Golang 中的 time 包详解(二):time.Duration
在日常开发过程中,会频繁遇到对时间进行操作的场景,使用 Golang 中的 time 包可以很方便地实现对时间的相关操作。接下来的几篇文章会详细讲解 time 包,本文讲解一下 time 包中的 time.Duration 类型。 time.Duration time.Duration 类型是…...
Linux 学习记录58(ARM篇)
Linux 学习记录58(ARM篇) 本文目录 Linux 学习记录58(ARM篇)一、GIC相关寄存器1. 系统框图2. 中断号对应关系 二、GICD寄存器1. GICD_CTLR2. GICD_ISENABLERx3. GICD_IPRIORITYRx4. GICD_ITARGETSRx5. GICD_ICPENDRx 三、GICC寄存器1. GICC_PMR2. GICC_CTLR3. GICC_IAR4. GICC_…...
【一文搞懂】—带霍尔编码器的直流有刷减速电机
文章目录 一、直流有刷电机二、减速比三、霍尔编码器3.1 霍尔编码器3.2 霍尔编码器测速原理 四、测速程序设计4.1 跳变沿检测4.2 计算转速 一、直流有刷电机 宏观上说直流有刷电机由固定部分(定子)和旋转部分(转子)组成。在定子上…...
滴水逆向三期笔记与作业——02C语言——05 正向基础/05 循环语句
目录 一、缓冲区溢出的HelloWorld二、永不停止的HelloWorld三、基础知识3.1 变量的声明3.2 类型转换(一般用于小转大)3.3 表达式3.4 语句和程序块3.5 参数与返回值3.6 关系运算符3.7 逻辑运算符:&& || !3.8 单目运算符3.9 三目运算符…...
Python抓取分享页面的源代码示例
本文章是关于利用Python方法来抓取某网站分享页面中的源码方法示例。需要大家注意的是Python抓取分享页面的源代码示例,是要在运行时导入BeautifulSoup.py文件后才可以使用。 Python抓取分享页面的源代码示例,需要用到python urllib2模块方法࿰…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
