#!/usr/bin/env python
# -*- coding: utf-8 -*-

class HandleBase():
    def __init__(self):
        self.m_successor = None

    def SetSuccessor(self, successor):
        self.m_successor = successor

    def CommonProcess(self, request):
        pass

    def HandleRequest(self, request):
        self.CommonProcess(request)

        if self.m_successor is None:
            print ('end of CoR')
            return
        else:
            self.m_successor.HandleRequest(request)

class TestHandle1(HandleBase):
    def CommonProcess(self, request):
        print ('testHandle1: %d'%request)

class TestHandle2(HandleBase):
    def CommonProcess(self, request):
        print ('testHandle2: %d'%request)

class HandleManager(object):
    def __init__(self):
        self.m_header = None

    def RegisterHandler(self, handler):
        if self.m_header is None:
            self.m_header = handler
        else:
            self.m_header.SetSuccessor(handler)

    def HandleRequest(self, request):
        if not self.m_header is None:
            self.m_header.HandleRequest(request)

if __name__=="__main__":
    hm = HandleManager()
    hm.RegisterHandler(TestHandle1())
    hm.RegisterHandler(TestHandle2())
    
    for i in range(10):
        hm.HandleRequest(i)
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐