设计模式十六(职责链模式,python实现)
来源:互联网 发布:手机网络赚钱资源 编辑:程序博客网 时间:2024/05/01 21:03
原理请参考相应书籍,这里直接给例子
职责链模式,用于分级审查。这里给出对于请求Request的处理(分等级的事故)。职责链上涉及到:
LevelOne 县政府
LevelTwo 市政府
LevelThree 省政府
# -*- coding: utf-8 -*-######################################################## # chain.py# Python implementation of the Class Client# Generated by Enterprise Architect# Created on: 13-十二月-2012 10:31:54# #######################################################from __future__ import divisionfrom __future__ import print_functionfrom __future__ import unicode_literalsfrom future_builtins import *class Request(object): def __init__(self, name,level): self.name=name self.level=level self.ls=list() passclass Handler(object): """This class defines an interface for handling requests and optionally implements the successor link. """ work = '正在处理' up='请转上级处理' down='请转下级处理' idle='目前没有规定该类问题如何处理' #m_Handler= Handler() def __init__(self, name='None',level=0): self.name=name self.level=level self.nextHandler=None pass def SetNext(self,nextHandler): self.nextHandler=nextHandler def HandleRequest(self, request): str=self.name+'----'+ '收到请求内容:'+request.name+' 等级:%d'%request.level +'----' if request.level==self.level: request.ls.append(str+self.work) pass elif self.nextHandler!=None: if request.level<self.level: request.ls.append(str+self.down) pass else: request.ls.append(str+self.up) pass self.nextHandler.HandleRequest(request) pass else: request.ls.append(str+self.idle) pass passclass LevelOne(Handler): """This class defines an interface for handling requests and optionally implements the successor link. """ def __init__(self, name='县政府',level=1): super(LevelOne,self).__init__(name,level) pass class LevelTwo(Handler): """This class defines an interface for handling requests and optionally implements the successor link. """ def __init__(self, name='市政府',level=2): super(LevelTwo,self).__init__(name,level) passclass LevelThree(Handler): """This class defines an interface for handling requests and optionally implements the successor link. """ def __init__(self, name='省政府',level=3): super(LevelThree,self).__init__(name,level) pass pass#客户端 class Client: """This class initiates the request to a ConcreteHandler object on the chain. """ m_HandlerOne= LevelOne() m_HandlerTwo=LevelTwo() m_HandlerThree=LevelThree() m_HandlerOne.SetNext(m_HandlerTwo) m_HandlerTwo.SetNext(m_HandlerThree) #一级事故 m_Request=Request('事故',1) m_HandlerOne.HandleRequest(m_Request) for item in m_Request.ls: print (item) pass print('\n')#二级事故 m_Request=Request('事故',2) m_HandlerOne.HandleRequest(m_Request) for item in m_Request.ls: print (item) pass print('\n') #三级事故 m_Request=Request('事故',3) m_HandlerOne.HandleRequest(m_Request) for item in m_Request.ls: print (item) pass print('\n') #四级事故 m_Request=Request('事故',4) m_HandlerOne.HandleRequest(m_Request) for item in m_Request.ls: print (item) pass
运行结果:
- 设计模式十六(职责链模式,python实现)
- 设计模式学习(十六):职责链模式
- 23种设计模式之python实现--职责链模式
- Python设计模式(六)【职责链模式】
- Python设计模式-职责链模式
- 大话设计模式(Python版)--职责链模式
- 设计模式C++实现--职责链模式
- 职责链模式(python)
- 设计模式(13)--职责链模式
- 职责链设计模式
- 【设计模式】职责链
- 设计模式---职责链
- 职责链设计模式
- 职责链设计模式
- java 设计模式学习笔记十六 chain of responsibility 职责链设计模式
- 职责链模式(python)
- 设计模式---职责链模式
- 设计模式-职责链模式
- 关于C51的优化
- 关于多重的函数调用
- C#winform导入数据
- 第16周项目1——小心的放开玩儿字符串
- c# Socket同步发送接收数据
- 设计模式十六(职责链模式,python实现)
- 优秀程序员不得不知道的20个位运算技巧
- centos 163源 更换 --来源于网络
- poi 导入excel源码
- Origin_8.0_crack(origin8.0序列号(origin8.0破解补丁))
- 配置文件当中怎样修改request validation mode
- Linux修改SSH端口和禁止Root远程登陆
- 在WYSIWYG模块中为Drupal 7配置CKEditor 4
- Python Windows Service的方式运行