设计模式(15)- 行为型模式 - 责任链模式

1. 责任链模式介绍

责任链模式在面向对象程式设计里是一种软件设计模式,它包含了一些命令对象和一系列的处理对象。每一个处理对象决定它能处理哪些命令对象,它也知道如何将它不能处理的命令对象传递给该链中的下一个处理对象。该模式还描述了往该处理链的末尾添加新的处理对象的方法。

--------------- 来自百度百科

1.1 个人想法

这个模式理解起来还是比较简单的。
就是一条链,你处理不了的 或者 处理完你这个之后,你就交给下一个处理。你也不知道下一个处理的啥,你也不必知道。

2. 代码

2.1 场景介绍

网上很多都是那种请假,或者是啥公司钱的那种逻辑,比如请3天假找主管,5天假找经理的这种。
这样的都是,自己处理不了的交给链里面的下一个。

我这个的例子是,文章敏感词汇,或者不合法字符的替换。比如将< >替换成别的。 或者污秽的话,替换了别的。

2.2 传统方式

传统方式干这个的话,那就是自己一股脑,再保存之前全替换了。然后就没然后了。。。。替换这些个字符还不容易。。。。你懂的。


那么问题来了,现在又出现了新的敏感词汇,你是不是还要进行替换。你原来的代码就没有扩展性,你是不是还要再改原来的代码,加上这个替换规则呢????那么职责链模式可以解决这个问题。

2.3 使用职责链

那么使用职责链,如何解决这个问题呢???

我们就直接吧规则弄成一条链,文章的内容经过这条链之后,什么敏感词汇什么的,都没有了。

那么出现新的替换逻辑之后怎么办呢?
直接就创建一个规则对象。直接加到这个链里面就行 了,那么下次再有新文章的时候,经过这条链之后肯定会经过这条过滤规则。

具体看下面的实现

  • 文章实体类(要处理的类)
    在这里插入图片描述

  • 职责抽象类
    在这里插入图片描述

  • 具体的职责类1
    在这里插入图片描述

  • 具体的职责类 2
    在这里插入图片描述

  • Client
    在这里插入图片描述

  • 运行结果如下:
    在这里插入图片描述

2.4 类图

在这里插入图片描述

2.5 如何扩展?

在这里插入图片描述

3. 总结

这个模式也是非常的好理解,记录一下吧。

猜你喜欢

转载自blog.csdn.net/weixin_42041788/article/details/107223366