博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python版本的责任链模式
阅读量:5255 次
发布时间:2019-06-14

本文共 1398 字,大约阅读时间需要 4 分钟。

# -*- coding:UTF-8 -*-import abcclass 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):        passclass 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

你可能感兴趣的文章
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
Java基础教程——网络基础知识
查看>>
Kruskal基础最小生成树
查看>>
【hdu 1429】胜利大逃亡(续)
查看>>
关于收费软件
查看>>
javascript之Style物
查看>>
图的深度优先遍历
查看>>
C# 之 提高WebService性能大数据量网络传输处理
查看>>
原生HttpClient详细使用示例
查看>>
Factory Design Pattern
查看>>
P1192-台阶问题
查看>>
一、使用pip安装Python包
查看>>
3.PHP 教程_PHP 语法
查看>>
Duilib扩展《01》— 双击、右键消息扩展
查看>>
利用Fiddler拦截接口请求并篡改数据
查看>>
python习题:unittest参数化-数据从文件或excel中读取
查看>>
在工程中要加入新的错误弹出方法
查看>>