Chain of Resposibility 职责链也是属于“数据结构”模式。
职责链在今天整个软件框架中应用确实不多,甚至你已经在运用链表的逻辑处理程序,但是可能并不意识到它是职责链的模式,这不重要。
文章目录
1. 动机( Motivation )
-
在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显式指定,将必不可少地带来请求发送者与接受者的紧耦合。
-
如何使请求的发送者不需要指定具体的接受者?让请求的接受者自己在运行时决定来处理请求,从而使两者解耦。
举例说明,在windows WPF等都会有界面的处理逻辑,顶级的是窗口,接下来有peipou,接下来是一些list,有些textbox,一层一层对象,当你鼠标点击时,事件会沿着层级链表,一层层网上传播,第一级没有处理,这个事件就往下传,这个场景就是Chain of Resposibility 职责链的一种。
2. 模式定义
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链(单向链表),并沿着这条链传递请求&