STRUTS2中的設計模式

在Struts2中,其攔截器結構的設計,是一個典型的責任鏈模式的應用。首先將整個執行劃分成若干相同類型的元素,每個元素具備不同的邏輯責任,並將他們納入到一個鏈式的數據結構中(我們可以把堆棧結構也看作是一個遞歸的鏈式結構),而每個元素又有責任負責鏈式結構中下一個元素的執行調用。
這樣的設計,從代碼重構的角度來看,實際上是將一個複雜的系統,分而治之,從而使得每個部分的邏輯能夠高度重用並具備高度可擴展性。所以,Interceptor結構實在是Struts2/Xwork設計中的精華之筆。
Struts2攔截器執行機理如下:
1. 整個結構就如同一個堆棧,除了Action以外,堆棧中的其他元素是Interceptor
2. Action位於堆棧的底部。由於堆棧"先進後出"的特性,如果我們試圖把Action拿出來執行,我們必須首先把位於Action上端的Interceptor拿出來執行。這樣,整個執行就形成了一個遞歸調用
3. 每個位於堆棧中的Interceptor,除了需要完成它自身的邏輯,還需要完成一個特殊的執行職責。這個執行職責有3種選擇:
1) 中止整個執行,直接返回一個字符串作爲resultCode
2) 通過遞歸調用負責調用堆棧中下一個Interceptor的執行
3) 如果在堆棧內已經不存在任何的Interceptor,調用Action 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章