📅  最后修改于: 2023-12-03 14:57:46.827000             🧑  作者: Mango
责任链是一种行为型设计模式,它允许多个对象在一个请求链上依次处理请求,直到其中一个对象能够处理该请求或者请求到达链的末尾而无法处理。
在这种模式中,每个对象都拥有一个指向它的下一个对象的引用,因此请求会沿着链依次传递。当一个对象不能处理请求时,它会把请求传递给下一个对象,直到请求被成功处理为止。
class Handler:
def __init__(self):
self.successor = None
def handle(self, request):
self.successor.handle(request)
class ConcreteHandlerA(Handler):
def handle(self, request):
if request == "A":
print("Request A handled")
else:
super().handle(request)
class ConcreteHandlerB(Handler):
def handle(self, request):
if request == "B":
print("Request B handled")
else:
super().handle(request)
class ConcreteHandlerC(Handler):
def handle(self, request):
if request == "C":
print("Request C handled")
else:
super().handle(request)
if __name__ == "__main__":
handler1 = ConcreteHandlerA()
handler2 = ConcreteHandlerB()
handler3 = ConcreteHandlerC()
handler1.successor = handler2
handler2.successor = handler3
handler1.handle("A")
handler1.handle("B")
handler1.handle("C")
handler1.handle("D")
在这个例子中,我们定义了一个抽象基类 Handler
,以及三个具体实现类 ConcreteHandlerA
、ConcreteHandlerB
和 ConcreteHandlerC
。
每个处理程序都有一个指向下一个处理程序的引用,因此请求会沿着链传递,直到到达能够处理请求的处理程序为止。