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

本文通过实例讲解Python中职责链模式的原理与应用,如何利用它实现对象间松耦合,请求的动态路由,以及如何创建和管理对象链来处理请求。通过一个包含抽象处理类和具体处理者类的示例,展示了模式的优势和使用场景。
摘要由CSDN通过智能技术生成

本文实例讲述了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)

运行结果:

3d9a42c9e5f981e112d2ad1547c67205.png

上面类的设计如下图:

1398d22f3c23cdd7bb411a773c9ba6e1.png

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值