责任链模式
最近看到一个设计模式,觉得这不就可以在我的项目上用上嘛,顺带总结了一些对这个模式的看法。
before :
当需要有大量接受者来处理这个请求的时候,会出现大量的if else语句
需求场景:
当多个对象来处理同一个请求的时候,可以采用这个模式,打个比方:工厂的流水线工作,当第一道程序失败了就给他退回,如果成功便让他自动进入下一道程序;而当我们要在某个地方再接一道晨旭,只需要在机器上添加上这道程序执行的位置,便能插入这道程序。
after:
没有大量的if else语句,总体来说耦合性比较低;
添加新的处理也比较方便;
向外只暴露了最外面的一层,并没有明显的暴露实现的原理。
项目使用
这里先交代下我的项目是一个多渠道发送信息平台;
我是在处理消息的时候使用了责任链模式;将要发送的消息封装为一条责任链,责任链里面是三个类,第一个是判断duty是否有空的;第二个主要是判断一些格式,比方说我采用邮件方式,那我就要判断传进来的参数是否符合格式;第三个则做到发送道消息队列,也就意味着完成整个责任链。所以整个过程中向外暴露的只有这个duty.process()方法。
缺点
但其实对于不同的设计模式都会对应它的缺点,比如说这个也有一定缺点:对比较长的职责链,请求的处理可能涉及多个处理对象,系统性能将受到一定影响