chain
: 用於表示乙個鏈條物件
(1)定義乙個陣列,用於儲存這條鏈所有的interceptor;
(2)定義乙個param,用於儲存該鏈式呼叫所需的引數;
(3)包含乙個proceed()方法,從第乙個interceptor開始,迴圈呼叫interceptor的intercept()方法;
(4)定義乙個proceednext(interceptor interceptor),接收乙個interceptor,表示從傳入位置的下乙個interceptor繼續執行intercept()方法;
interceptor
:用於執行具體邏輯
(1)包含乙個intercept(chain chain)方法,接收當前chain物件,返回乙個boolean值;
(2)當執行同步任務時,讓interceptor返回false,執行完當前interceptor會立即執行下乙個interceptor。
(3)當執行非同步任務時,讓intercept()返回true,會結束當前鏈條的呼叫,如果非同步結果返回後還需要繼續執行,則呼叫chain的proceednext(interceptor interceptor)方,會繼續執行下乙個interceptor。
param
:用於儲存該鏈式呼叫所需的引數,供所有interceptor使用。
關鍵**:
public class chain }}
public void proceednext(interceptor interceptor) }}
}... ...
}
uml圖
表單巢狀問題的解決方法
在html中,表單form是不能夠巢狀使用的,例如 name form1 name form2 form form 這樣是不合法的,那麼如果我們遇到需要用到兩個表單的情況應該怎麼辦呢?解決的方法很簡單,合併兩個表單,動態改變表單提交位置。表單form中的action為空,然後在js 中改變actio...
Windows窗體巢狀問題解決
窗體巢狀 經驗豐富的visual basic開發者知道多文件介面 mdi 應用程式能夠包含子窗體,那些子窗體由mdi父窗體管理。但是如果沒有mdi的能力你怎樣實現包含巢狀窗體?例如乙個mdi子窗體也可能需要包含另乙個窗體。有時能夠使用使用者控制項 usercontrol 實現這種功能,但是如果你真的...
設計模式 如何優雅地使用責任鏈模式
責任鏈模式 chain of responsibility pattern 在 head first設計模式 一書中被稱為 剩下的模式 其實使用也是蠻多的。最近在學習netty的過程中用到了責任鏈模式,在此反過頭來重溫一下責任鏈模式。當你想要讓乙個以上的物件有機會能夠處理某個請求的時候,就使用責任鏈...