Skip to main content

Posts

Showing posts with the label Chain of Responsibility Pattern

Chain of Responsibility Pattern

Chain of Responsibility Pattern用途 Chain of Responsibility Pattern類似一個結構化的switch,輸入若不符合條件就會給下一個case處理。 Chain of Responsibility Pattern實作結構 基本所需的結構有upSendData、SetUpSendData、Processor三個。 upSendData:主要是記錄下一個Processor所處裡的資料。 SetUpSendData:用來設定紀錄upSendData的資料,也就是結構連結下一個處理資料的設定。 Processor:主要執行目前的結構要處理的事情。 Chain of Responsibility Pattern設計概念 1.Processor設計:需要有一個判斷是否可以被當下Processor處理的規則,若不符合此規則會檢查是否還有下一個檢查項目,若已經是最後一個檢查項目,則作沒有符合項目的處理,若有下一個檢查項目會call下一個檢查項目的Processor繼續做下去。(如下範例) public override void Processor(input) { if (判斷條件) { ... } else { if (null != upSendData) upSendData.Processor(input); } } 2.SetUpSendData和upSendData設計:SetUpSendData和upSendData基本上是固定的寫法,SetUpSendData用來設定下一個檢查項目的upSendData讓upSendData.Processor可以往下串接。(如下範例) protected SendDataHandler upSendData; public void SetUpSendData(SendDataHandler upSendData) { this.upSendData = upSendData; } abstract class SendDataHandler { protected Dictionary<string, string> D; protected SendDataHandler upSendD...