本文实例讲述了Python设计模式之职责链模式原理与用法。分享给大家供大家参考,具体如下:

职责链模式(Chain Of Responsibility):使多个对象都有机会处理请求,从而避免发送者和接收者的耦合关系。将对象连成链并沿着这条链传递请求直到被处理

下面是一个设计模式的demo:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

__author__ = 'Andy'

"""

大话设计模式

设计模式——职责链模式

职责链模式(Chain Of Responsibility):使多个对象都有机会处理请求,从而避免发送者和接收者的耦合关系。将对象连成链并沿着这条链传递请求直到被处理

(在调用时要定义好哪个实例是哪个实例的职责上一级)请求沿着定义的链条传递给可以处理请求的对象

"""

#抽象一个处理类

class Handle(object):

def __init__(self):

self.successor = ''

def setsuccessor(self, successor):

self.successor = successor

def handle_request(self,request):

pass

# 具体处理者类1

class ConcreteHandle1(Handle):

def handle_request(self,request):

if request>0 and request<=10:

print "ConcreteHandle1处理请求 ",request

else:

self.successor.handle_request(request)

# 具体处理者类2

class ConcreteHandle2(Handle):

def handle_request(self,request):

if request>10 and request<=20:

print "ConcreteHandle2处理请求 ",request

else:

self.successor.handle_request(request)

if __name__=="__main__":

c1 = ConcreteHandle1()

c2 = ConcreteHandle2()

c1.setsuccessor(c2)

for i in range(6,15,2):

c1.handle_request(i)

运行结果:

上面类的设计如下图:

接收者和发送者都没有对方的明确信息,且链中的对象自己并不知道链的结构,职责链可简化对象的相互连接,他们仅需保持一个指向后继者的引用,而不需要保持他所有候选接收者的引用,大大降低了耦合度,可以随时增加或修改处理一个请求的结构

但是要当心,一个请求沿着职责链到达末端,都没有正确的配置而得不到处理的情况

希望本文所述对大家Python程序设计有所帮助。

python设计模式案例分析_Python设计模式之职责链模式原理与用法实例分析相关推荐

  1. mysql 实时聚合分析_mysql滑动聚合/年初至今聚合原理与用法实例分析

    本文实例讲述了mysql滑动聚合/年初至今聚合原理与用法.分享给大家供大家参考,具体如下: 滑动聚合是按顺序对滑动窗口范围内的数据进行聚合的操作.下累积聚合不同,滑动聚合并不是统计开始计算的位置到当前 ...

  2. 简述游标原理 mysql_mysql游标的原理与用法实例分析

    本文实例讲述了mysql游标的原理与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是游标 创建游标 使用游标 首发日期:2018-04-18 什么是游标: 如果你前面看过mysql函数,会发 ...

  3. 设计模式C++实现(14)——职责链模式

    职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止.其思想很简单,考虑员工要求加薪.公司的管理者 ...

  4. mysql 自定义函数实例_mysql自定义函数原理与用法实例分析

    本文实例讲述了mysql自定义函数原理与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是函数 函数的创建 函数的调用 函数的查看 函数的修改 函数的删除 首发日期:2018-04-18 什么 ...

  5. python图片解析库_python用来获得图片exif信息的库实例分析

    本文实例讲述了python用来获得图片exif信息的库用法.分享给大家供大家参考.具体分析如下: exif-py是一个纯python实现的获取图片元数据的python库,官方下载地址: http:// ...

  6. python定义链表节点_Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】...

    本文实例讲述了Python数据结构与算法之链表定义与用法.分享给大家供大家参考,具体如下: 本文将为大家讲解: (1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计 (2)链表类插入和 ...

  7. mysql 实时聚合分析,mysql累积聚合原理与用法实例分析

    本文实例讲述了mysql累积聚合原理与用法.分享给大家供大家参考,具体如下: 累积聚合为聚合从序列内第一个元素到当前元素的数据,如为每个员工返回每月开始到现在累积的订单数量和平均订单数量 行号问题有两 ...

  8. 多字段mysql触发器实例_mysql触发器原理与用法实例分析

    本文实例讲述了mysql触发器原理与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是触发器 创建触发器 单条触发器语句 多条触发器语句 查看触发器 删除触发器 触发器的新旧记录引用 首发日期 ...

  9. 设计模式---职责链模式(Chain of Responsibility Pattern)

    目录 1.学校 OA系统采购审批需求 2.传统方式解决审批流程 3.传统 方式 问题分析 4.职责链模式基本介绍 5.职责链模式原理类图 6.职责链模式解决OA采购审批 7.职责链模式在SpringM ...

最新文章

  1. 平年闰年c语言源代码,C语言平年闰年问题
  2. 产品设计体会(1011)少做就是多做
  3. java 打包目录_Java打包文件目录问 zip文件
  4. 《Android应用开发》——1.3节配置Eclipse
  5. java nio doug_Java NIO简介
  6. java intent bundle_Android 通过Intent使用Bundle传递对象详细介绍
  7. flink DDL读取kafka数据-Scala嵌入DDL形式
  8. 动态内存分配到底为谁分配内存空间【浅谈动态内存的一个实例】
  9. Spring整合Mybatis-完成用户登录
  10. 三类计算机语言及特点,计算机语言分为哪三类,计算机语言有哪些
  11. JavaScript由浅到深【含案例源码】
  12. android4.2实现pwm,Android平台下AOA协议的PWM信号控制系统
  13. 2020中青杯A题集成电路通道布线数学建模全过程论文及程序
  14. 辩证统一和有机统一的比较
  15. 再看快速排序(QuickSort)
  16. 学了这么多年精益思想,居然不知道还有第八种浪费 | IDCF
  17. 圆的面积php,圆的面积教学活动方案
  18. Tomcat修行之路-7.Tomcat-Mapper组件机制以及请求处理机制
  19. js检测PDF插件 Adobe Reader是否安装
  20. js bind 传参、_Node.js 在微医的应用场景及实践

热门文章

  1. Linux虚拟文件系统VFS的相关数据结构和操作
  2. 电脑更新重启后黑屏_手机黑屏了,重启后万事大吉?那可就错了!
  3. python创建类和类方法
  4. 中科大计算机竞赛夺冠,中科大斩获全国唯一特等奖,力压清华捧得华为毕昇杯...
  5. java安装的时候无效参数,spring-boot 打成jar把后 启动时指定参数无效
  6. freenas安装mysql_FreeNAS Jail中安装MySQL数据库服务器
  7. python中的单例模式_Python单例模式
  8. html5执行shell,利用nginx执行Shell 脚本
  9. excel填充序列_零基础、初学者必须掌握的10个Excel技巧,办公必备!
  10. linux无密码ssh,scp,rsync