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

聚合搜索中的设计模式

适配器模式

适配器模式: 让原本不兼容的两个东西,通过一个中间层,,让他们兼容到一起。。。通过转换,让两个系统能够完成对接

如果需要别人接入你的接口,,就需要定义要给统一的规范,,不能让他想接就接,,,
需要定义统一的数据规范: 什么数据源允许接入,,你的数据源接入,必须满足什么要求。。。
在聚合搜索项目中,,任何接入系统的数据,他必须要根据 关键词搜索,并且支持分页

先定义一个统一的规范:

/*** 新的数据源接入进来,, 必须实现这个接口*/
public interface DataSource<T> {/*** 搜索* @param searchText 搜索内容* @param pageNum* @param pageSize* @return*/Page<T> doSearch(String searchText, long pageNum, long pageSize);}

其他的数据源接入,去实现这个接口,写适配的逻辑:
在这里插入图片描述

门面模式

门面模式: 给复杂的子系统提供一个统一的接口,,隐藏了背后复杂的逻辑和交互,,对外暴露简单,简化调用。。。
当调用你系统的 客户端 ,,调用觉得麻烦的时候,,就应该思考,,是不是应该抽象一个门面了

注册器模式 (Registry Pattern)

注册器模式: 是一种创建型的设计模式,,其核心是通过全局访问点管理对象的创建和重用,,,它可以通过一个中心化注册表统一存储,检索,销毁对象实例,,常用于减少重复创建开销或实现全局资源访问

在聚合搜索中,不同的类型需要调用不同的实例的方法,,虽然都实现了统一的接口,,但是在调用的时候,还是需要声明具体的实现类,,,调用实现类真正的方法,,,就会有很多 if else或者 switch case,如果不想使用这种多层的判断,,可以将 实现类的信息,注册到一个 全局的Map中,,map的key就是枚举值,,map的value就是实现类,,
注册完了之后,通过 map.get(枚举值) ,获取到具体的实现类,进行调用,,避免多层判断

http://www.lryc.cn/news/619242.html

相关文章:

  • 数据结构:中缀到后缀的转换(Infix to Postfix Conversion)
  • 开发避坑指南(23):Tomcat高版本URL特殊字符限制问题解决方案(RFC 7230 RFC 3986)
  • 一键设置 NTP 时区的脚本(亲测,适用于部署 K8S 的前置环境)
  • 数据结构:图
  • 终端安全与网络威胁防护笔记
  • Web 服务详解:HTTP 与 HTTPS 配置
  • 谷歌 Web Guide 如何重塑搜索排名及其 SEO 影响
  • AR眼镜新赛道:光波导与MicroOLED如何解决眩晕难题?
  • -bash: ll: 未找到命令
  • Python Day28 HTML 与 CSS 核心知识点 及例题分析
  • open Euler--单master部署集群k8s
  • C++联合体的定义
  • 六、SpringBoot多环境开发
  • 数据结构 二叉树(2)堆
  • 论区间dp:常用模型(附极角排序教程)
  • 计算机网络摘星题库800题笔记 第5章 传输层
  • 正则表达式解析(二)
  • mysql中的常见的索引类型及其特点
  • 前端css学习笔记3:伪类选择器与伪元素选择器
  • 开源!!! htop移植到OpenHarmony
  • 基于LLVM的memcpy静态分析工具:设计思路与原理解析(C/C++代码实现)
  • 实现文字在块元素中水平/垂直居中详解
  • tensorrt-llm0.20.0离线部署DeepSeek-R1-Distill-Qwen-32B
  • Apache POI中通过WorkBook写入图片后出现导出PDF文件时在不同页重复写入该图片问题,如何在通过sheet获取绘图对象清除该图片
  • 2787. 将一个数字表示成幂的和的方案数
  • 万物平台模型导入样例大全(实时更新中~)
  • 力扣面试150题--爬楼梯 打家劫舍 零钱兑换 最长递增子序列
  • 10. React组件间的通信
  • 某跨国金融机构法律法规自动文本摘要(ATS/文本大意提取)功能规划
  • Ansible 基础到实操笔记