课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在前几期的文章中给大家简单介绍了设计模式中的一些常见类型,本文我们继续来学习一下,职责链设计模式结构包含哪些。
1、意图
职责链模式是这样一种设计模式,设计一种处理链,允许请求沿着处理链进行发送。收到请求后,每个处理者都可以对请求进行处理,并选择是否将请求传递给下一个处理者,或者封装新的请求传递下去。
2、动机
我们在上面描述的组件响应事件就是职责链应用的场景。在我们构造UI组件时,一般来说都是都是一种树形结构,那么事件的传递其实就是从叶子到根的一条链路。
由于UI的树形结构,我们很容易根据需求设计出职责链模式。但是在其他不明显的业务上,就不一定想到职责链模式。我们来分析这样一个需求,那就是在web服务里面增加用户验证。
一般来说,我们很容易想到定义一个验证方法,然后接受用户的登录请求,然后进行验证。这个并不难,但是这时需求增加了一项,需要先去另一个系统认证,如果验证成功了,再进行加下来的验证。这个也不难,我们可以在验证方法中加入这个逻辑。系统用了一段时间后,发现验证方法太弱了,需要增加额外的检查,这时我们只能继续在验证方法中添加,然后后面发现验证的效率不够高,需要增加缓存来提高响应速度。这时我们还是会想到直接在验证方法里面加入逻辑即可。
而这就是设计模式的用途了,代码随着不断发展问题变得越来越多,说明我们之前的设计就有问题。那我们尝试用上面的职责链模式来重构我们的这部分逻辑:
先定义一条链路,也就是将检查步骤的逻辑抽象成相同的结构,然后将步骤注册到链路中。
然后定义每一步的参数是请求数据,每个处理者处理完后都会返回一个状态来确定是继续处理还是终止。
那么我们看一下有没有解决上面的问题,一就是需求不断变更,在这种情况下我们只需要增加一个步骤并将其注册到链路中,而整个链路的逻辑不需要任何的变化。然后就是复用,我们可以直接将链路复制过去,然后将我们需要的步骤移过去,由于每个步骤是完全对等的,所以就不存在什么逻辑依赖了。
3、结构
经过上面的分析,我们就很容易得到职责链的数据结构:
处理者:也就是处理请求的具体逻辑,并且返回值需要能够决定请求是否继续传递。
然后就是我们的客户端负责生成链路并注册处理者。整个职责链模式的结构非常简单,重要的是这个设计理念。
希望这辈子,最让你无悔的事情就是来达内学习!学习向来不是件易事,但无论过程多么艰难,希望你依然热爱生活,热爱学习!永远记得,达内将与你一同前行!现在扫码,立即领取万元课程礼包,助力0基础快速入行,为你梳理行业必备技能,全方位了解岗位发展前景!
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。