python版本的责任链模式

本文介绍了一种使用Python实现的责任链模式。通过定义一系列处理对象并为这些对象提供一种链接方式来形成一条链,使得请求可以沿着这条链传递,直到被某个处理对象处理。具体实现了三个具体的处理者类,每个类负责处理特定范围内的请求,并将不属于自己处理范围的请求传递给下一个处理者。
# -*- coding:UTF-8 -*-
import abc


class Handler(metaclass=abc.ABCMeta):
    def __init__(self):
        self._successor = None

    def set_successor(self, successor):
        self._successor = successor

    @abc.abstractmethod
    def handle_request(self, request):
        pass


class ConcreteHandler1(Handler):
    def handle_request(self, request):
        if request >= 0 and request < 10:
            print("{}处理请求{}".format(self.__class__.__name__, request))
        elif self._successor != None:
            self._successor.handle_request(request)


class ConcreteHandler2(Handler):
    def handle_request(self, request):
        if request >= 10 and request < 20:
            print("{}处理请求{}".format(self.__class__.__name__, request))
        elif self._successor is not None:
            self._successor.handle_request(request)


class ConcreteHandler3(Handler):
    def handle_request(self, request):
        if request >= 20 and request < 30:
            print("{}处理请求{}".format(self.__class__.__name__, request))
        elif self._successor is not None:
            self._successor.handle_request(request)


if __name__ == "__main__":
    h1 = ConcreteHandler1()
    h2 = ConcreteHandler2()
    h3 = ConcreteHandler3()

    h1.set_successor(h2)
    h2.set_successor(h3)

    requests = [2, 5, 14, 22, 18, 3, 27, 20]
    for request in requests:
        h1.handle_request(request)

 

转载于:https://www.cnblogs.com/gjinwei/p/8351160.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值