行为型模式:解释器模式、责任链模式、命令模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、访问者模式、模板方法模式。
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
from abc import ABCMeta, abstractmethod class Handler(metaclass=ABCMeta): # 接口:请假处理者 @abstractmethod def handle_leave(self, day): pass class GeneralManager(Handler): def handle_leave(self, day): if day < 10: print("总经理准假%d天" % day) else: print("你还是辞职吧") class DepartmentManager(Handler): def __init__(self): self.next = GeneralManager() def handle_leave(self, day): if day <= 5: print("部门经理准假%d天" % day) else: print("部门经理职权不足") self.next.handle_leave(day) class ProjectDirector(Handler): def __init__(self): self.next = DepartmentManager() def handle_leave(self, day): if day <= 3: print("项目主管准假%d" % day) else: print("项目主管职权不足") self.next.handle_leave(day) # Client day = 4 h = ProjectDirector() h.handle_leave(day)
示例以员工请假为例:每个具体处理者都有权限去处理请求,如果处理不了沿着链发送给next。如果全都不成功,则发送个
角色:
适用场景:
优点:
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。观察者模式又称“发布——订阅”模式。
原文:https://www.cnblogs.com/xiugeng/p/10417851.html