关于如何以面向对象的方式去完成一套业务逻辑的编写
什么是职责链
职责链[1]是相对来说比较好理解的设计模式, 毕竟和现实是那么相近. 他也是面向对象的一种模式. 具体的请参考下文
例子
以进入某些场所为例, 保安会先检查是否有24小时核酸, 有的话会让你进门, 否则的话不让你进门. 接着前台会看是否到过高风险地区, 没有的话让你进大厦, 否则进不了大厦.
在这里门卫和前台承担了不同的职责, 他们不需要管前面的人做了什么, 只需完成自己分内的工作, 再将工作交接给后续的人去完成. 这个例子非常简单, 现实中职责链可以表示更复杂的流程. 如医院的分诊, 公司 OA 流程等等.
1 | st=>start: Start |
代码实现
IMiddleware 是职责链中逻辑块的接口. MiddlewareChainBuilder 则是负责创建职责链.
首先, 在程序开始的时候注册各个逻辑块为单例模式
接着调用 MiddlewareChainBuilder 的 CreateChain 方法. 这个方法最主要的作用就是给每个逻辑块制安上了左膀右臂, 使得逻辑块之间都相连起来.
而各个逻辑块根据上一步传过来的数据判断下一步应该走向哪里. 因为很好理解就不展开讲了. 具体看代码吧.