什么是个责任?
当然是有事,不会推卸责任啊
为什么有个链?
因为你必须知道,这个责任得推给谁,一级一级往下推。
举个例子来说明,你们的老师(相当一个request)要求你们小组完成一项任务,你们小组A,B,C三个人,那你们怎么办?
但是老师,其实并不关注你们谁会做,可是,他关注你们做完没有,做的怎么样?
A来看这个任务,他发现他不会,可是他知道B的水平比他高,他不会就推给了B,让B来做
B来做这个任务,他还差点,还是没完成,但他知道C更厉害,于是,他也推给了C,
C拿来这个任务,果然,很快的解决了这个问题。
那么这个过程,就顺利的完成了。
有人问了,那还不是和传统的一样,每个人都调用一次?
但是,你可想到,假如A直接会做,那么B,C都没关系了,同样的B要会做直接就跳过了C。
1) 有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。
2) 你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
3) 可处理一个请求的对象集合应被动态指定。
有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求
此处强调一点就是,链接上的请求可以是一条链,可以是一个树,还可以是一个环,模式本身不约束这个,需要我们自己去实现,同时,在一个时刻,命令只允许由一个对象传给另一个对象,而不允许传给多个对象。
关于这个链,是你自己去创建的,所以,不同的人,创建的方式也就不一样了。
看了一些,感觉这个最简洁: