国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python設計模式之職責鏈模式原理與用法實例分析

2020-02-16 00:36:10
字體:
來源:轉載
供稿:網友

本文實例講述了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# 具體處理者類1class ConcreteHandle1(Handle):  def handle_request(self,request):    if request>0 and request<=10:      print "ConcreteHandle1處理請求 ",request    else:      self.successor.handle_request(request)# 具體處理者類2class 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 Socket編程技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凭祥市| 南平市| 雅安市| 龙州县| 若羌县| 井冈山市| 文水县| 城市| 连江县| 田东县| 宁乡县| 彰武县| 清徐县| 中阳县| 勐海县| 崇左市| 来宾市| 若尔盖县| 蓝田县| 肇源县| 忻城县| 栾城县| 新安县| 屏东市| 额济纳旗| 来安县| 万年县| 固始县| 察雅县| 高陵县| 龙口市| 菏泽市| 青冈县| 哈尔滨市| 海口市| 洛隆县| 龙川县| 临洮县| 宁南县| 河池市| 抚顺县|