责任链模式是一种对象的行为模式【GOF95】。在责任链模式里,很多对象由每一个对象对其下家的用而链起来形成一条链,请求在这个链上传递,直到链上的某一个对象决定处理此请求。 发出请求的客户端并不知道链上的哪一个对象终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。
结构图:
抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法,以设定和返回对下家的引用。这个角色通常由一个抽象类或接口实现。
具体处理者(ConcreteHandler)角色:具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。由于具体处理者持有对下家的引用,因此如果需要,具体处理者可以访问下家。
责任链并不创建责任链,责任链的创建必须由系统的其它部分创建出来。责任链模式降低了请求的发送端和接收端之间的耦合,使多个对象都有机会处理这个请求。一个链可以是一条线、一个换、或则一个树。
总结:这个责任链 好像 就是把所有的处理方法都连接起来了,如果自己不处理可以丢给下一个环节进行处理。从结构上来看,就是有一个抽象类 里面聚合了自己,那么子类在实现的同时还可以指定一个关联的 相同对象,以便进行传递。 那么在调用的时候 就可以通过这条链式结构 最终找到适合处理自己的方法。这就好比 一个 多级的 if{}else if{}else if{}...一样