责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。请求沿着链传递,直到有一个对象处理它为止。
下面是一个简单的 Python 3 代码示例来演示责任链模式:
# 定义处理请求的抽象类
class Handler:def __init__(self, successor=None):self.successor = successordef handle_request(self, request):if self.successor:self.successor.handle_request(request)# 具体处理请求的类
class ConcreteHandler1(Handler):def handle_request(self, request):if request == 1:print("ConcreteHandler1 处理请求")else:super().handle_request(request)class ConcreteHandler2(Handler):def handle_request(self, request):if request == 2:print("ConcreteHandler2 处理请求")else:super().handle_request(request)# 客户端代码
if __name__ == "__main__":handler1 = ConcreteHandler1()handler2 = ConcreteHandler2(handler1)handler2.handle_request(1) # 输出:ConcreteHandler1 处理请求handler2.handle_request(2) # 输出:ConcreteHandler2 处理请求handler2.handle_request(3) # 没有符合条件的处理器,无输出
在这个示例中,Handler
是处理请求的抽象类,具体的处理器 ConcreteHandler1
和 ConcreteHandler2
继承自 Handler
,每个处理器根据条件判断是否能够处理请求,如果不能处理,则将请求传递给下一个处理器。客户端通过组合不同的处理器形成责任链,并向第一个处理器发起请求。