1.应用场景
(1)将一个任务拆分为具有顺序的多个部分,每个类完成相应的部分,并且顺序执行
(2)软件窗口的消息传播
(3)SERVLET容积的过滤器Filter的实现
2.代码实现
#!/usr/bin/env python #! _*_ coding:UTF-8 _*_ from abc import ABCMeta, abstractmethod class Handler(object): @abstractmethod def handle(self): '''具体处理方法在子类中实现''' pass def handleNext(self): '''处理下一个''' if hasattr(self, "next_handler") and self.next_handler is not None: self.next_handler.handle() def setNextHanndler(self, next_handler): '''设置下一个处理器''' self.next_handler = next_handler class OneHandler(Handler): def handle(self): print "one handle" self.handleNext() class TwoHandler(Handler): def handle(self): print "two handle" self.handleNext() class ThreeHandler(Handler): def handle(self): print "three handle" self.handleNext() if __name__ == "__main__": oneHandler = OneHandler() twoHandler = TwoHandler() threeHandler = ThreeHandler() oneHandler.setNextHanndler(twoHandler) twoHandler.setNextHanndler(threeHandler) oneHandler.handle()
结果:
/Users/liudaoqiang/PycharmProjects/numpy/venv/bin/python /Users/liudaoqiang/Project/python_project/day19_cor/cor_test.py
one handle
two handle
three handle
Process finished with exit code 0