意图:
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
适用性:
有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。
你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
可处理一个请求的对象集合应被动态指定。
代码示例:
#!/usr/bin/env python #-*- coding:utf-8 -*- ''' Chain of Responsibility ''' # 职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链, # 并沿着这条链传递该请求,直到有一个对象处理它为止。 # 适用场景: # 1、有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定; # 2、在不明确指定接收者的情况下,向多个对象中的一个提交一个请求; # 3、处理一个请求的对象集合应被动态指定。 class BaseHandler(object): '''处理基类''' def successor(self,successor): #next_handler #与下一个责任者关联 self._successor = successor class RequestHandlerL1(BaseHandler): '''第一级请求处理者''' name = "TeamLeader" def handle(self,request): if request < 500 : print("审批者[%s],请求金额[%s],审批结果[审批通过]"%(self.name,request)) else: print("