设计模式篇之 责任链模式 Chain of Responsibility
别名: CoR, Chain of Command
目的
责任链模式是一种行为设计模式,它允许你将请求沿着一个处理者链传递。在接收到请求时,每个处理者决定是处理该请求,还是将请求传递给链中的下一个处理者。
问题
想象一下,你正在开发一个在线订单系统。你希望限制对系统的访问,只有经过身份验证的用户才能创建订单。此外,具有管理员权限的用户应该能够完全访问所有订单。
经过一番规划后,你意识到这些检查必须按顺序进行。每当应用程序收到包含用户凭据的请求时,它都可以尝试将用户身份验证到系统中。然而,如果这些凭据不正确且身份验证失败,就没有理由继续进行其他检查。

在接下来的几个月里,你又实现了几个这样的顺序检查。
- 一位同事建议直接将原始数据传递给订单系统是不安全的。因此,你增加了一个额外的验证步骤来清理请求中的数据。
- 后来,有人发现系统容易受到暴力破解密码的攻击。为了抵消这种风险,你迅速增加了一个检查,过滤来自同一 IP 地址的重复失败请求。
- 还有人建议可以通过在重复请求包含相同数据时返回缓存结果来