python設計模式 責任鏈模式

2021-08-10 10:05:38 字數 1253 閱讀 9043

學習版本3.5.2

#學習版本3.5.2

'''在責任鏈模式中,多個不同職能的物件連線起來形成一條鏈,請求在這個鏈上傳遞,直》到鏈結上有乙個物件將請求處理完;發這個請求的客戶端並不知道鏈上的哪乙個物件最終處

理了這個請求,這可以使得系統可以在不影響客戶端的情況下動態的重新組織和分配責任'''

#1到3類請求分別需要部門a到b來處理

class department(object):

def __init__(self, id):

self._nextdepartment = none

self.cancompletetaskid = id

def setnextdepartment(self, nextd):

self._nextdepartment = nextd

def getnextdepartment(self):

return self._nextdepartment

def completetask(self, id):

print("complete task", id)

def gettask(self, id):

if id == self.cancompletetaskid:

self.completetask(id)

else:

if self.getnextdepartment() == none:

print("error, there are no such department.")

else:

self.getnextdepartment().gettask(id)

if __name__ == "__main__":

da = department(1)

db = department(2)

dc = department(3)

da.setnextdepartment(db)

db.setnextdepartment(dc)

da.gettask(1)

da.gettask(2)

da.gettask(3)

da.gettask(4)

執行結果

complete task 1

complete task 2

complete task 3

error, there are no such department.

Python設計模式 責任鏈模式

責任鏈模式 chain of responsibility pattern 可將請求的傳送方與處理請求的接收方解耦。這樣的話,某函式就不用直接呼叫別的函式了,而是可以把請求傳送給乙個由諸多接收者所組成的鏈條。鏈條中的首個接收者可以處理請求並停止責任鏈 也就是不再繼續往下傳遞 也可以把請求發給下乙個接...

python設計模式 責任鏈模式

一 什麼是責任鏈模式 責任鏈 chain of responsibility 模式用於讓多個物件來處理單個請求 時,或者用於預先不知道應該由哪個物件 來自某個物件鏈 來處理某個特定請求時。二 責任鏈原則 三 實現 coding utf 8 class event def init self,name...

設計模式 責任鏈模式

定義 避免請求傳送者與接收者耦合在一起,讓多個物件都有可能接收請求,將這些請求連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止。例項 請假加薪審批 using system using system.collections.generic using system.text namespa...