某個事件有一系列的處理者都可能處理,因此將這些處理者用乙個鍊錶連線起來,將該事件延該鍊錶依次傳遞,一旦某個處理者解決該事件就不再繼續傳遞,自定義該鍊錶可保證處理者的優先順序,這種模式可以保證系統的處理順序按照設定順序來而不至於變得混亂,可應用於大部分事件處理的地方如log記錄、錯誤處理等。
class
event
intgeteventtype()
private
:int type;
}///抽象事件處理類
class
eventhandler
eventhandler*
getnexteventhandler()
private
: eventhandler* next=
nullptr;}
///事件處理類1
class
type1eventhandler
:public eventhandler
elseif(
getnexteventhandler()
!=nullptr
)else
return
false;}
}///事件處理類2
class
type2eventhandler
:public eventhandler
elseif(
getnexteventhandler()
!=nullptr
)else
return
false;}
}void
main()
此模式經常配合命令模式一起使用。 設計模式學習 責任鏈模式
責任鏈模式 使多個物件都有機會處理請求,從而避免了請求的傳送者和接受者之間的耦合關係,將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,只到有物件處理他未止.使用場景 多個物件可以處理同乙個請求,但具體由哪個物件處理則在執行時動態覺得 在請求處理者不明確的情況下向對個物件中的乙個提交乙個請求 需要動態指...
學習設計模式 責任鏈模式
說明 使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係,將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理他為止。需求 請假審批 解決方式 a.定義乙個處理者抽象類,宣告處理方法,定義乙個處理者類,定義設定下個處理者的方法 b.分別定義處理者實現類 處理者實現類2...
設計模式 責任鏈模式學習
責任鏈模式,顧名思義,就是將需要實現的功能,拆分為各自專一的責任,組成一條責任鏈,來完成對資料的處理。先看下面一段demo 需要被處理的物件類 data public class user 責任處理器介面 public inte ce filter責任處理器的兩個介面 public class fi...