設計模式C 實現(十四) 責任鏈模式

2022-05-30 03:27:15 字數 1594 閱讀 2908

使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。

在以下條件下使用:

實現乙個郵件處理系統,將郵件按照類別交給不同的物件處理。

已經分類的郵件

public class request

private string _content;

public string type

}

'> public

class

request

private

string _content;

public

string type

}處理的抽象,類似鍊錶,自身包含指向下乙個處理節點的物件

public abstract class handler

}

'> public

abstract

class

handler

}對不同型別進行處理的物件

//粉絲郵件處理

public class fanhandler:handler

else}}

//垃圾郵件處理

public class spamhandler : handler

else}}

//抱怨和意見郵件處理

public class complainthandler:handler

else}}

//其他郵件處理

public class defaulthandler:handler

}

"> //粉絲郵件處理

public

class

fanhandler:handler

else}}

//垃圾郵件處理

public

class

spamhandler : handler

else}}

//抱怨和意見郵件處理

public

class

complainthandler:handler

else}}

//其他郵件處理

public

class

defaulthandler:handler

}使用之前,先要將責任鏈串聯起來

class program

}

'> class

program

}執行結果

降低耦合度

增強了給物件指派職責的靈活性

不保證被接受(用乙個預設處理類來解決這個問題)

《head first 設計模式》

《設計模式》

c#設計模式(21)——責任鏈模式

(十四)責任鏈模式

基於物件導向的思想,想想業務中哪些流程是可以組裝為乙個鏈條的 就是說會有一些相似的業務,組成的功能鏈條可能只是順序會改變,或會增減鏈條節點,就可以用責任鏈模式復用 每乙個handler都持有下乙個handler的引用,他如果判斷還有下乙個handler,就會繼續往下執行 public abstrac...

C 設計模式 責任鏈模式

優點 請求和處理分開 缺點 避免出現超長鏈的情況,一般的做法是在handler中設定乙個最大節點數量,在setnext方法中判斷是否已經是超過其閾值,超過則不允許該鏈建立,避免無意識地破壞系統效能 抽象處理者 ifndef handler h define handler h include req...

設計模式 責任鏈模式

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