Dispatcher
时间: 2024-05-09 21:12:07 浏览: 107
Dispatcher是一个常用的设计模式,用于将请求与处理程序进行解耦。它允许根据请求的类型将请求分发给不同的处理程序。以下是一个示例,演示了如何使用Dispatcher模式来处理不同类型的请求。
```python
class Dispatcher:
def __init__(self):
self.handlers = {}
def add_handler(self, request_type, handler):
self.handlers[request_type] = handler
def dispatch(self, request):
request_type = request.get('type')
if request_type in self.handlers:
handler = self.handlers[request_type]
handler.handle(request)
else:
print("No handler found for request type: ", request_type)
class RequestHandler:
def handle(self, request):
raise NotImplementedError("Subclasses must implement handle() method")
class LoginHandler(RequestHandler):
def handle(self, request):
print("Handling login request:", request)
class LogoutHandler(RequestHandler):
def handle(self, request):
print("Handling logout request:", request)
# 创建一个Dispatcher对象
dispatcher = Dispatcher()
# 创建不同类型的请求处理程序
login_handler = LoginHandler()
logout_handler = LogoutHandler()
# 将处理程序添加到Dispatcher中
dispatcher.add_handler('login', login_handler)
dispatcher.add_handler('logout', logout_handler)
# 创建不同类型的请求
login_request = {'type': 'login', 'username': 'user1', 'password': 'pass1'}
logout_request = {'type': 'logout', 'username': 'user1'}
# 分发请求
dispatcher.dispatch(login_request)
dispatcher.dispatch(logout_request)
```
这个例子中,我们创建了一个Dispatcher类,它维护了一个字典,将请求类型与处理程序进行映射。我们还创建了两个处理程序:LoginHandler和LogoutHandler,它们分别处理登录和注销请求。我们将这些处理程序添加到Dispatcher中,并通过调用dispatch方法来分发请求。
阅读全文