责任链模式
-
内容:
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些连城一条链,并连着这条链传递该请求,知道有一个对象处理它为止
-
角色
- 抽象处理者
- 具体处理者
- 客户端
-
使用场景
- 有多个对象可以处理一个请求,哪个对象处理由运行时决定
- 在不明确接收者的情况下,向多个对象中的一个提交一个请求
-
优点
-
降低耦合度
一个对象无需知道是哪一个对象请求
-
-
代码实例
from abc import ABCMeta, abstractmethod class Handler(metaclass=ABCMeta): @abstractmethod def handler_leave(self): pass class ZongJingLi(Handler): def __init__(self, day): self.day = day def handler_leave(self): if self.day > 10: print('你辞职把') else: print('OK') class BuMenJingLi(Handler): def __init__(self, day): self.day = day self.next = ZongJingLi(self.day) def handler_leave(self): if self.day > 5: self.next.handler_leave() else: print('OK') class XiangMuJingLi(Handler): def __init__(self, day): self.day = day self.next = BuMenJingLi(self.day) def handler_leave(self): if self.day > 3: self.next.handler_leave() else: print('OK') day = 1000 xiangmy = XiangMuJingLi(day=day) xiangmy.handler_leave()