当前位置: 首页 > 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.dtcms.com/a/327224.html

相关文章:

  • 鲲鹏arm服务器安装neo4j社区版,实现图书库自然语言检索基础
  • leetcode49.字母异位词分组
  • NLP—词向量转换评论学习项目分析真实案例
  • 本地(macOS)和服务器时间不同步导致的 Bug排查及解决
  • linux 执行ls命令文件夹显示全白色
  • 微前端架构:原理、场景与实践案例
  • Rust 性能提升“最后一公里”:详解 Profiling 瓶颈定位与优化|得物技术
  • 计算机视觉(6)-自动驾驶感知方案对比
  • 使用 NetBird 创建安全的私有网络,简化远程连接!
  • Golang 语言中 Context 的使用方式
  • Rust学习笔记(二)|变量、函数与控制流
  • 【七指共振擒牛战法】副图+选股指标——多维度捕捉主升浪的量化交易利器
  • 智慧校园|智慧校园管理小程序|基于微信小程序的智慧校园管理系统设计与实现(源码+数据库+文档)
  • [Robotics_py] 定位滤波器 | 预测与更新 | 扩展卡尔曼滤波器(`EKF`)
  • Linux操作系统应用软件编程——标准IO
  • Java Stream ReduceOps
  • 负载均衡详解
  • 小程序排名优化:用户行为数据背后的提升密码
  • PostgreSQL 范围、空间唯一性约束
  • 「ECG信号处理——(23)基于ECG和PPG信号的血压预测」2025年8月12日
  • SQL 生成日期与产品的所有组合:CROSS JOIN(笛卡尔积)
  • Linux 系统运维、网络、SQL Server常用命令
  • 机器学习 [白板推导](九)[变分推断]
  • DRAM、SRAM、NAND Flash、NOR Flash、EEPROM、MRAM存储器你分得清吗?
  • 用pom文件从nexus3拉依赖,无法拉取的一个问题
  • 逻辑删除 vs 物理删除:MyBatis-Plus 实现指南与实践
  • 可泛化逻辑推理Python编程作为医疗AI发展方向研究
  • 关于数据库的restful api接口工具SqlRest的使用
  • 如何在 Ubuntu 24.04 LTS Linux 中安装 JSON Server
  • 2025年国赛新规解读:8-12最新发布文件