当前位置:主页 > python教程 > Python设计模式之职责链模式原理与用法实例分析

Python中职责链模式原理与用法详解

发布:2019-11-22 11:33:45 177


为网友们分享了Python设计模式相关的编程文章,网友勾由希根据主题投稿了本篇教程内容,涉及到Python、设计模式、职责链模式、Python设计模式之职责链模式原理与用法实例分析相关内容,已被331网友关注,下面的电子资料对本篇知识点有更加详尽的解释。

Python设计模式之职责链模式原理与用法实例分析

本文实例讲述了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程序设计有所帮助。


参考资料

相关文章

  • python input的含义以及用法总结

    发布:2019-07-03

    Python3.x中input()函数接受一个标准输入数据,返回为string类型。Python2.x中input()相等于 eval(raw_input(prompt)) ,用来获取控制台的输入。


  • Python外观模式知识点实例总结

    发布:2019-06-10

    这篇文章主要介绍了Python设计模式之外观模式,结合实例形式详细分析了外观模式的概念、原理、用法及相关操作注意事项,需要的朋友可以参考下


  • python虚拟环境部署步骤教学

    发布:2019-08-06

    一、前言 预处理 建议仔细看完本文章之后在进行操作,避免失误,本环境可以用于生产环境,有利于生产环境python之间的环境隔离,互相不会产生环境冲突; pyenv 和 pyenv-virtualenv 可以完美结


  • 利用Python爬虫爬取NBA数据功能实例分享

    发布:2020-03-07

    这篇文章主要介绍了Python实现爬虫爬取NBA数据功能,涉及Python针对URL模块、字符串、列表遍历、Excel写入等相关操作技巧,需要的朋友可以参考下


  • python和汇编语言的区别知识点

    发布:2019-09-05

    Python不是汇编语言,汇编语言是低级的机器语言,由一系列的汇编指令来编写的,而Python是高级编程语言,是一种动态的强类型解释型语言。


  • Mac上Python使用ffmpeg完美解决方案(避坑必看!)

    发布:2023-04-14

    ffmpeg是一个强大的开源命令行多媒体处理工具,下面这篇文章主要给大家介绍了关于Mac上Python使用ffmpeg完美解决方案的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下


  • python有什么数据类型

    python有什么数据类型

    发布:2022-06-23

    给网友朋友们带来一篇关于python的教程,python中的数据类型包括nu其中不可变数据类型是字符串、数字、元组、集合;可变数据类型是列表和字典。


  • python import 引用上上上级包的三种方法

    发布:2023-03-22

    这篇文章主要介绍了python import 引用上上上级包的三种方法包的三种方法,需要的朋友可以参考下


网友讨论