聚合搜索中的设计模式
适配器模式
适配器模式: 让原本不兼容的两个东西,通过一个中间层,,让他们兼容到一起。。。通过转换,让两个系统能够完成对接
如果需要别人接入你的接口,,就需要定义要给统一的规范,,不能让他想接就接,,,
需要定义统一的数据规范: 什么数据源允许接入,,你的数据源接入,必须满足什么要求。。。
在聚合搜索项目中,,任何接入系统的数据,他必须要根据 关键词搜索,并且支持分页
先定义一个统一的规范:
/*** 新的数据源接入进来,, 必须实现这个接口*/
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(枚举值)
,获取到具体的实现类,进行调用,,避免多层判断