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

聚合搜索中的设计模式

适配器模式

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

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

先定义一个统一的规范:

/*** 新的数据源接入进来,, 必须实现这个接口*/
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.xdnf.cn/news/17597.html

相关文章:

  • 【Unity】Unity中ContentSizeFitter有时无法及时自适应大小问题解决
  • Baumer高防护相机如何通过YoloV8深度学习模型实现木板表面缺陷的检测识别(C#代码UI界面版)
  • python --- 基础语法(1)
  • Web 开发 14
  • [SC]如何使用sc_semaphore实现对共享资源的访问控制
  • 【网络运维】Linux和自动化:Ansible
  • 基于RAII的智能指针原理和模拟实现智能指针
  • 企业培训笔记:宠物信息管理--实现宠物信息的添加
  • NLP—词向量转换评论学习项目分析
  • 【Java项目与数据库、Maven的关系详解】
  • Docker部署kafka实操+Java中访问
  • 42.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--网关集成认证(一)
  • 云计算概述
  • 【web站点安全开发】任务2:HTML5核心特性与元素详解
  • GitLab CI + Docker 自动构建前端项目并部署 — 完整流程文档
  • 跨界重构规则方法论
  • TCP服务器网络编程设计流程详解
  • Linux Ansible的安装与基本使用
  • Linux:企业级WEB应用服务器TOMCAT
  • 技术干货|Kafka 如何实现零停机迁移
  • Stereolabs ZED相机 选型指南:双目 / 单目、短距 / 长距,如何为机器人视觉系统匹配最优方案?
  • selenium常见的与浏览器版本不兼容闪退问题
  • 计算机网络2-2:物理层下面的传输媒体
  • 【Node.js从 0 到 1:入门实战与项目驱动】2.2 验证安装(`node -v`、`npm -v`命令使用)
  • 计算机视觉(4)-相机基础知识恶补
  • Flink Redis维表:Broadcast Join与Lookup Join对比及SQL示例
  • 从零部署Nacos:替代Eureka的服务注册与服务发现基础教程
  • 使用Excel制作甘特图
  • 无人机三维路径规划
  • Python科学计算与可视化领域工具TVTK、Mayavi、Mlab、Traits(附视频教程)