JAVA设计模式-责任链模式

猪猪侠 猪猪侠
2019-09-10 10:28
9
0

责任链模式

  如果有多个对象都有处理请求,责任链可以对发送者和接受者解耦,沿着责任链传递,直到有一个对象能处理它.

 

 

示例

  公司退款流程,财务小李只能处理500元以内的全额退款,赵经理可以处理10000元以内的全额退款,其他情况都需要王总来决定

  定义退款对象

抽象决策人退款流程

 

 

 

实现每个决策者的责任范围

职员:

经理:

 

老板

 

测试代码

定义责任链的责任传递,调用时直接调用最上层即可

运行:

 

总结:

  责任链的优点在于,可以将发送和接受者解耦,让多个对象都有机会处理这个请求,每个人处理自己责任范围的业务,可以动态的增加或减少流程

  当然,缺点也很明显,请求不一定能被处理,可以通过自定义最后处理条件, 上面请求中,boss里我定义了最终执行结果,不再传递,

在性能上.需要从开头进行遍历,对性能有一定的损耗.

 

发表评论

验证码: