代碼執行結果
以下為程式執行截圖(第二張為註解掉 InitGM() 中初始化 managerTeam 代碼後的結果):
代碼結構說明
- Case 類別:代表問題實體。
CaseCategory 為問題分類,普通客服與客服經理處理不同分類;ImportantCase 標記是否為重要問題(需上級審核);Reply 為回覆內容。
- CustomerService 抽象類別:責任鏈中的抽象處理者,定義下一責任人引用與設定方法,並宣告統一處理介面。
- NormalGM 普通客服:具體處理者。若問題分類在其負責範圍內則回覆,否則上報上級;回覆後若為重要問題則提交審核。
- GMManager 客服經理:具體處理者。優先處理負責分類的問題(重要問題同樣上報);若非負責分類,則檢查是否已有回覆(審核請求),有則審核,無則上報。
- GMDirector 客服總監:鏈路終點。所有問題必須在此結束,對無回覆問題進行回覆,對審核請求進行審核。
客戶端調用流程
- 呼叫
InitGM() 初始化團隊:9 位普通客服(處理分類 1、2)、2 位客服經理(處理分類 3、4)、1 位總監。
- 呼叫
InitCOR() 動態建構責任鏈:若有經理則普通客服→經理→總監;無經理則普通客服直報總監。
- 模擬問題資料,隨機指派普通客服作為入口點處理。
執行情境分析
有客服經理時
- 分類 1:普通客服直接處理完畢
- 分類 2 重要:普通客服回覆 → 經理審核
- 分類 3:普通客服轉交經理處理
- 分類 4 重要:普通客服轉交經理 → 經理回覆 → 總監審核
- 分類 5:普通客服 → 經理 → 總監處理
無客服經理時
- 分類 1:普通客服直接處理
- 分類 2 重要:普通客服回覆 → 總監審核
- 分類 3、4、5:普通客服直接轉交總監處理
若無責任鏈模式,此流程將極度混亂難以維護。