前言 :
如果您有一個應用程式,必須對輸入的字元作不同的處理,例如 :
- char c = 'A';
- if (Character.isLetter(c)) {
- System.out.println("處理字母資料");
- }
- if (Character.isDigit(c)) {
- System.out.println("處理數字資料");
- }
- System.out.println("處理符號資料");
Chain of Responsibility 模式 :
您可以改為以下的方式 :
執行結果 :
在組織物件之間的職責時,通常是從細粒度至粗粒度的方式來組織,從特殊到抽象化,就像程式中將數字視為字元的特殊化,字元又為符號的特殊化. Chain of Responsibility 的 UML 結構圖如下所示 :
在更一般的情況下,可以將請求包裝為一個物件,並提供 getType() 之間的方法,以讓 Chain of Responsibility 中的物件進行比對,例如 :
在 Gof 的書中所舉的例子為輔助說明系統,在一個介面中希望使用者一定可以得到相關的說明主題,如果子元件有說明的話,就顯示相關說明,否則的話就轉發給 包括它的容器元件或父元件,以保證使用者的輔助說明請求一定可以得到回應.
Supplement
* Tutorialspoint - Chain of Responsibility Pattern
沒有留言:
張貼留言