簡體中文 | 繁體中文

大話設計模式-----第183章


超級程式 在時光深處等你 首席總裁,我已嫁人! 血滅輪迴 萬古仙穹 侯門新妻 傲嬌小毒妃:鬼王,快躺好! 絕世法醫:冷王的廢柴妃 美女的護花使者 誓不為後 傲嬌神探妙法醫 冠軍至上 鳳凰劫:王的棄妃 嗜血公主復仇之戀 暴戀 醉傾天下:來世攜手白頭 大明小昏君 至尊劍仙 麻辣女兵2
第183章

大B:“由於在JUnit中,參雜了其它的模式在裡面,使得命令模式的特點不太明顯。我給你講講以命令模式在Web開發中最常見的應用——Struts中Action的使用作為例子。”

小A:“嗯。好的。”

大B:“在Struts中Action控制類是整個框架的核心,它連線著頁面請求和後臺業務邏輯處理。按照框架設計,每一個繼承自Action的子類,都實現execute方法——呼叫後臺真正處理業務的物件來完成任務。”

大B:“需要注意的是:繼承自DispatchAction的子類,則可以一個類裡面處理多個類似的操作。”

下面我們將Struts中的各個類與命令模式中的角色對號入座。

先來看下命令角色——Action控制類

publicclassAction{

……

/*

*可以看出,Action中提供了兩個版本的執行介面,而且實現了預設的空實現。

*/

publicActionForwardexecute(ActionMappingmapping,

ActionFormform,

ServletRequestrequest,

ServletResponseresponse)

throwsException{

try{

returnexecute(mapping,form,(HttpServletRequest)request,

(HttpServletResponse)response);

}catch(ClassCastExceptione){

returnnull;

}

}

publicActionForwardexecute(ActionMappingmapping,

ActionFormform,

HttpServletRequestrequest,

HttpServletResponseresponse)

throwsException{

returnnull;

}

}

下面的就是請求者角色,它僅僅負責呼叫命令角色執行操作。

publicclassRequestProcessor{

……

protectedActionForwardprocessActionPerform(HttpServletRequestrequest,

HttpServletResponseresponse,

Actionaction,

ActionFormform,

ActionMappingmapping)

throwsIOException,ServletException{

try{

return(action.execute(mapping,form,request,response));

}catch(Exceptione){

return(processException(request,response,e,form,mapping));

}

}

}

大B:“Struts框架為我們提供了以上兩個角色,要使用struts框架完成自己的業務邏輯,剩下的三個角色就要由我們自己來實現了。”

小A:“那要怎麼去實現啊?”

大B:“實現的步驟如下:1、很明顯我們要先實現一個Action的子類,並重寫execute方法。在此方法中呼叫業務模組的相應物件來完成任務。2、實現處理業務的業務類。3、配置struts-config.xml配置檔案,將自己的Action和Form以及相應頁面結合起來。4、編寫jsp,在頁面中顯式的制定對應的處理Action。”

推薦小說