LLD - Behavioral Design Patterns — Part 1
Consider this simplified handler chain code snippet:
What is the output of this code?
class Handler:
def __init__(self, successor=None):
self.successor = successor
def handle(self, request):
if self.can_handle(request):
return f"Handled {request}"
elif self.successor:
return self.successor.handle(request)
else:
return "Not handled"
def can_handle(self, request):
return False
class ConcreteHandlerA(Handler):
def can_handle(self, request):
return request == 'A'
class ConcreteHandlerB(Handler):
def can_handle(self, request):
return request == 'B'
chain = ConcreteHandlerA(ConcreteHandlerB())
print(chain.handle('B'))What is the output of this code?
