23种设计模式介绍(Python示例讲解)(24)
2023-04-30 来源:飞速影视
需要注意的是,在代理模式中,代理主题和真实主题必须实现同样的接口,因此代理主题必须是抽象主题的子类。此外,代理主题还可以通过实现额外的方法来增加一些附加的功能。
3)行为型模式
1、职任链模式(Chain of Responsibility)
职责链模式(Chain of Responsibility)是一种行为型设计模式,它通过将请求的发送者和接收者解耦,从而使多个对象都有机会处理这个请求。
实现思路:
在职责链模式中,我们定义一系列的处理器对象,每个处理器对象都包含一个对下一个处理器对象的引用。当请求从客户端发送到处理器对象时,第一个处理器对象会尝试处理请求,如果它不能处理请求,则将请求传递给下一个处理器对象,以此类推,直到请求被处理或者所有的处理器对象都不能处理请求。
优缺点:
职责链模式的优点是它可以灵活地配置处理器对象的顺序和组合,从而满足不同的处理需求。它还可以将请求的发送者和接收者解耦,从而提高系统的灵活性和可扩展性。职责链模式的缺点是如果处理器对象过多或者处理器对象之间的关系过于复杂,可能会导致系统的维护难度增加。
职责链模式通常涉及以下角色:
处理器接口(Handler Interface):定义处理器对象的接口,包含处理请求的方法和对下一个处理器对象的引用。具体处理器类(Concrete Handlers):实现处理器接口,处理请求或将请求传递给下一个处理器对象。客户端(Client):创建处理器对象的链,将请求发送给链的第一个处理器对象。
下面是一个简单的 Python 实现示例:
1、定义处理器接口:
class Handler: def set_next(self, handler): pass def handle(self, request): pass
2、实现具体处理器类:
class AbstractHandler(Handler): def __init__(self): self._next_handler = None def set_next(self, handler): self._next_handler = handler return handler def handle(self, request): if self._next_handler: return self._next_handler.handle(request) return Noneclass ConcreteHandler1(AbstractHandler): def handle(self, request): if request == "request1": return "Handled by ConcreteHandler1" else: return super().handle(request)class ConcreteHandler2(AbstractHandler): def handle(self, request): if request == "request2": return "Handled by ConcreteHandler2" else: return super().handle(request)class ConcreteHandler3(AbstractHandler): def handle(self, request): if request == "request3": return "Handled by ConcreteHandler3" else: return super().handle(request)
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号