[TOC]

引入问题:

  • 论坛中发表文章
  • 后台经过信息处理才可以发表或者进入数据库
  • 后台过滤、审查(敏感词、黑客代码)
  • 过滤动作不确定,以后还可能加各种各样的关键词(关键词得从远程缓存拿)

UML类图

image.png

问题解决

  • 要选择可拓展性好的设计模式:责任链模式(实现同一接口),保证了chain和chain可以相互连接起来,chain里面可以加chain,就是因为chain实现了Filter接口
  • 过滤器模式处理(doFilter、doNext)
  • 设计模式的原则:
    • 简单问题复杂化
    • 封装变化(哪变封装哪)
  • 链式编程是一种编程技巧(并不是是链式编程就是责任链模式)return this;

    针对引入问题的责任链实现

    ```java package com.mashibing.dp.cor;

import java.util.ArrayList; import java.util.List;

public class Main { public static void main(String[] args) { // 实体类、过滤器、过滤器链在同一个文件中实现 Msg msg = new Msg(); msg.setMsg(“大家好:),