certain-design-patterns/chain.py

33 lines
1.3 KiB
Python
Raw Permalink Normal View History

2025-02-07 12:10:20 +03:00
from abc import ABC, abstractmethod
class Handler(ABC):
def __init__(self, successor=None): self.successor = successor # Следующий обработчик в цепи
@abstractmethod
def handle_request(self, request): pass
class ConcreteHandlerA(Handler):
def handle_request(self, request):
if request == "A":
return f"Handler A handled the request: {request}"
elif self.successor:
return self.successor.handle_request(request)
return "Request not handled"
class ConcreteHandlerB(Handler):
def handle_request(self, request):
if request == "B":
return f"Handler B handled the request: {request}"
elif self.successor:
return self.successor.handle_request(request)
return "Request not handled"
class ConcreteHandlerC(Handler):
def handle_request(self, request):
if request == "C": return f"Handler C handled the request: {request}"
elif self.successor: return self.successor.handle_request(request)
return "Request not handled"
handler_chain = ConcreteHandlerA(ConcreteHandlerB(ConcreteHandlerC())) # Цепочка обработчиков
requests = ["A", "B", "C", "D"] # Примеры запросов
for req in requests: print(handler_chain.handle_request(req))