Golang|分布式搜索引擎中所使用到的设计模式

article/2025/7/26 9:36:21

在这里插入图片描述

  • 迭代器模式
    • 定义:在遍历接口时,提供统一的方法函数供调用,保持一致性。
    • 核心思想:与大众习惯保持一致,方便第三方实现容器类时保持一致。
    • 常见方法:如next()方法,适用于所有集合类,简化遍历操作。
  • 工厂模式
    • 定义:返回接口而不是具体类的实例,接口有多种实现,由参数指定。
    • 特点:工厂函数根据参数返回不同类的实例,实现灵活的创建对象。
    • 应用:如生产宝马或奔驰汽车,具体生产哪种汽车由参数决定。
  • builder模式
    • 定义:对象有多个成员变量,可以在运行时动态赋值,通过位置方法链式赋值。
    • 核心:位置方法返回类本身,方便链式调用,适用于复杂对象的构建。
    • 应用:如设置多个成员变量的值,简化对象构建过程。
  • 单例模式
    • 定义:确保某段代码只执行一次,创建重要资源时只创建一次,如数据库连接。
    • 核心:通过sync.Once保证整个go进程内某段代码只执行一次,避免资源浪费。
    • 应用:如MySQL数据库连接,限制连接上限,防止资源浪费。
  • 外观模式
    • 定义:将多个复杂系统封装在一起,对外提供简单的接口,简化客户端访问。
    • 特点:客户端不需要直接面对多个复杂系统,通过外观模式访问更加简单。
    • 应用:如Nginx的反向代理,提供负载均衡和额外功能,简化访问流程。
  • 代理模式
    • 定义:为类添加一个中介或代理,控制访问原始类,并提供额外功能。
    • 特点:代理类提供原始类的所有功能,并添加额外功能,如Nginx的爬虫封禁功能。
    • 应用:如Nginx的反向代理,提供负载均衡和额外功能,增强系统能力。
  • 策略模式
    • 定义:将复杂策略的实现放在接口中,通过参数传递具体实现方案。
    • 特点:策略接口持有具体实现,解耦策略的实现和使用,提高灵活性。
    • 应用:如根据不同条件选择不同的排序算法,通过策略模式实现灵活切换。
  • 模版方法
    • 定义:抽象出公共的模板代码,个性化代码留在子类实现,简化工作流开发。
    • 特点:模板方法定义公共流程,子类实现个性化逻辑,提高代码复用性。
    • 应用:如工作流中的相似流程,通过模板方法简化开发过程。

在这里插入图片描述


http://www.hkcw.cn/article/dalMypeQQw.shtml

相关文章

招工招聘系统开发——适配多元场景,满足企业多样化招聘需求

不同的企业有不同的招聘需求,不同的岗位也有不同的招聘特点。我们的招工招聘系统开发,充分考虑了企业的多样化需求,适配多元场景,为企业提供全方位的招聘解决方案。 对于大型企业来说,招聘规模大、岗位种类多、招聘流…

优化版本,增加3D 视觉 查看前面的记录

上图先 运来的超出发表上限,重新发。。。 #11:06:57Current_POS_is: X:77Y:471Z:0U:-2 C:\Log\V55.txt import time import tkinter as tk from tkinter import messagebox from PIL import Image, ImageTk import socket import threading from date…

《TCP/IP 详解 卷1:协议》第2章:Internet 地址结构

基本的IP地址结构 分类寻址 早期Internet采用分类地址(Classful Addressing),将IPv4地址划分为五类: A类和B类网络号通常浪费太多主机号,而C类网络号不能为很多站点提供足够的主机号。 子网寻址 子网(Su…

JNI开发流程

一. 引言 最近在做一个自己的项目,就是基于FastDDS封装一套JAVA库,让android和java应用可以使用dds的功能。 由于FastDDS是使用C编写的开源库,因此java的类库想要调用FastDDS的接口,需要额外编写一个JNI层的动态库对FastDDS的接口…

powershell 中 invoke-expression 报错解决

打开powershell就出现这个报错: 网上搜了也没有很好的解决办法,抱着一点点期待,问了豆包 根据豆包的指示,在终端执行以下 几个命令,报错解决了(开心万岁) # 移除多余的引号和空路径 $pathArra…

交错推理强化学习方法提升医疗大语言模型推理能力的深度分析

核心概念解析 交错推理:灵活多变的思考方式 交错推理(Interleaved Reasoning)是一种在解决复杂问题时,不严格遵循单一、线性推理路径,而是交替、灵活应用多种推理策略的方法。这种思维方式与人类专家在处理复杂医疗问题时的思考模式更为接近,表现为一种动态、适应性强的…

【下载ECharts最简单的方法】

最简单下载ECharts的方法 对于简单项目,我们需要的echarts文件是echarts.min.js,以下是下载ECharts的最简单方法: 方法一:直接下载(推荐初学者) 访问ECharts官网:https://echarts.apache.org…

西藏建筑安全员 B 证考试中常见的 单选题及解析

西藏建筑安全员 B 证考试中常见单选题及解析,涵盖安全生产管理、法律法规、安全技术等核心考点,结合西藏地区建筑施工特点整理,帮助理解考试重点: 一、安全生产管理基础 1. 安全管理原则与制度 1、建筑施工安全管理的方针是&am…

案例分享--血管支架的径向力分布评估--DIC数字图像相关技术用于生物医学-高置信度DIC测量

医疗设备制造商有责任创造和确保高效且安全的产品,以守护人类的健康。EchoBio LLC公司的Kenneth Perry博士是植入式医疗设备实验验证行业的领导者和专家。Perry博士的一项研究任务是评估用于疏通血管阻塞的编织自膨胀支架的径向力分布。Perry博士特别需要关注径向力…

[Javascript进阶]JSON.stringify与JSON.parse详解

JSON.stringfy JSON.stringify 的核心作用是: 👉 将 JS 的对象、数组、基本类型转换为合法的 JSON 字符串。 手撕实现时,要考虑以下几个方面: 基本类型处理: string → 加上双引号,注意转义;nu…

VirtualBox给Rock Linux9.x配置网络

写这篇文章之前,先说明一下,我参考的是我之前写的《VirtualBox Linux网络配置》 我从CentOS7转到了Rock9,和配置Centos7一样,主流程没有变化,变化的是Rock9.x中的配置文件和使用的命令。 我再说一次,因为主…

逆向分析基础总结

一、了解计算机部件 CPU: 中央处理器。有三个重要的部件: 逻辑部件:负责算数运算,包括定点运算、浮点运算等。 寄存器部件:负责临时数据存储,一个CPU包含多个寄存器。 控制部件:负责发出指令所…

企业信息化集成方案:聚水潭·奇门数据对接金蝶云星空

聚水潭奇门数据集成到金蝶云星空:销售退货单更新方案 在企业信息化管理中,数据的高效流动和准确对接是实现业务流程自动化的关键。本文将分享一个实际案例,展示如何通过轻易云数据集成平台,将聚水潭奇门系统中的销售退货数据无缝…

多功能文档处理工具推荐

软件介绍 今天为大家介绍一款功能强大的文档编辑工具坤Tools,这是一款在吾爱论坛广受好评的办公软件。 软件背景 坤Tools是由吾爱论坛用户分享的软件,在论坛软件榜单上长期位居前列,获得了用户的一致好评。 软件性质 这是一款完全离线、…

软考-系统架构设计师-第十八章 面向服务架构设计理论与实践

面向服务架构设计理论与实践 18.1 SOA 的相关概念18.2 SOA 的发展历史18.3 SOA 的参考架构18.4 SOA 主要协议和规范18.5 SOA 设计的标准要求18.6 SOA 的作用与设计原则18.7 SOA 的设计模式18.8 构建 SOA 架构时应该注意的问题18.9 SOA 实施的过程 18.1 SOA 的相关概念 &#x…

AI书签管理工具开发全记录(五):后端服务搭建与API实现

文章目录 AI书签管理工具开发全记录(四):后端服务搭建与API实现前言 📝1. 后端框架选型 🛠️2. 项目结构优化 📁3. API路由设计 🧭分类管理书签管理 4. 数据模型定义 💾分类模型&…

CentOS-stream-9 Zabbix的安装与配置

一、Web环境搭建部署Zabbix时,选择合适的MariaDB、PHP和Nginx版本非常重要,以确保兼容性和最佳性能。以下是建议版本:Zabbix 6.4 MariaDB:官方文档推荐使用MariaDB 10.3或更高版本。对于CentOS Stream 9,建议使用Maria…

Scratch节日 | 龙舟比赛 | 端午节

端午节快乐! 这款专为孩子们打造的Scratch游戏——《龙舟比赛》,让你在掌控龙舟的竞速中,沉浸式体验中华传统节日的魅力! 🎮 游戏亮点 节日氛围浓厚:化身龙舟选手,在波涛汹涌的河流中展开刺激竞…

抢占先机!品牌如何利用软文营销领跑内容营销赛道?

在当今这个信息爆炸的时代,内容营销已成为品牌与消费者沟通的重要桥梁。而软文营销,作为内容营销的一种重要形式,更是以其独特的魅力和高效的传播力,成为众多品牌抢占市场先机的利器。本文将深入探讨品牌如何利用软文营销领跑内容…

用谷歌云服务器可以做些什么?

解锁云端无限可能 在当今数字化飞速发展的时代,云计算技术犹如一股强大的动力,推动着各行各业的变革与创新。而谷歌云服务器,作为云计算领域的佼佼者,正以其卓越的性能和丰富的功能,为全球用户开启一扇通往全新数字世界…