关于责任链模式的意图其实非简单,它可以让每个对象都有一次机会决定自己是否处理请求,以便于避免请求的发送者与接受者之间的耦合。在现实生活中也会有这样的情形,比如工厂的流水线上,工人的分工明确,每个工人只会负责自己的那部分职责,不是自己负责的操作,将交由下一个工人进行处理。而我在下面的代码中也会模拟一个责任链模式,只有满足条件的Command才对请求进行处理,并跳出责任链。
代码如下:
我为 context 设置为其执行操作的CommandName:"test.spring.CommandA",意图便是只有这个类才会对context进行操作,然后跳出责任链,其他的Command都不会对其进行操作,但是会继续交由责任链中的下一个Command对象来处理,直到走到正确的Command为止。
代码的执行结果如下:
result:execute command have CommandA
很明显在责任链中只有CommandA对Context对象进行了处理,其他的Command对其都是视而不见。而这样的设计意图也就是Chain of Responsibility的精髓所在。
好了责任链模式就介绍到这里,在下一篇中我将介绍Proxy模式。