责任链
责任链模式用于解除请求事件发送者与处理者之间的关系,能够处理请求的对象会连成一条链,并且沿着这条链来传递请求,直到有一个对象获取并处理了请求为止。可以想象一下击鼓传花游戏的场景。
以下给出一个简单的示例。
class Handler:
def handle(self, request):
pass
def next(self, next):
self.next = next
return self.next
def forward(self, request):
self.next.handle(request)
class HandlerOne(Handler):
def handle(self, request):
if request.type == 'type1':
print("Handler 1 process")
else:
self.forward(request)
class HandlerTwo(Handler):
def handle(self, request):
if request.type == 'type2':
print("Handler 1 process")
else:
print("end of chain")
requests = ["type1", "type2", "type3"]
h1 = HandlerOne()
h1.next(HandlerTwo())
for request in requests:
h1.handle(request)