过滤器模式进阶
过滤器模式就是根据某种规则,从一组对象中,过滤掉一些不符合要求的对象的过程。
与责任模式地联系
过滤器与责任链的相似之处是处理过程都一环一环地进行,不同之处在于责任链中责任的传递一般会有一定的顺序,而过滤器通常没有这种顺序,所以过滤器比责任链简单。当然,过滤器也可以按照职责模式的方式来实现,这时我们认为每一次的过滤都是一种职责(一个任务),而整个过滤流程是一种特殊的链。
设计要点
- 过滤的目标:即要被过滤的对象,通常是一个对象数组
- 过滤器:负责过滤不需要的对象,一般一个规则对应一个类
- 过滤器链:即过滤器的集合,负责管理和维护过滤器,用这个对象进行过滤时,它包含的每一个子过滤器都会进行一次过滤。这个类并不总是必要的,但如果有多个过滤器,有这个类将会带来极大的方便。
优缺点
优点:
- 将对象的过滤、校验逻辑抽离出来,降低系统的复杂度
- 过滤规则可实现重复利用。
缺点:
性能较低,每个过滤器对每一个元素都会进行遍历。如果有n个元素,m个过滤器,则复杂度为O(mn)
应用场景
- 敏感词过滤、舆情检测
- 需要对对象列表或数据列表进行核验、审查或预处理的场景
- 对网络接口的请求和相应进行拦截