侵入式和非侵入式的區別
非侵入式設計:一個客戶端的程式碼可能包含框架功能和客戶端自己的功能。
侵入式設計:就是設計者將框架功能“推”給客戶端,而非侵入式設計,則是設計者將客戶端的功能“拿”到框架中用。侵入式設計有時候表現為客戶端需要繼承框架中的類,而非侵入式設計則表現為客戶端實現框架提供的介面。
侵入式設計帶來的最大缺陷是,當你決定重構你的程式碼時,發現之前寫過的程式碼只能扔掉。而非侵入式設計則不然,之前寫過的程式碼仍有價值。
struts1的設計是侵入式的:
例如:
public class loginAction extends Action{
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws ActionException{
LoginForm loginForm = (LoginForm)form;
if ( "scott" .equals(loginForm.getUsername() && "tiger" .equals(loginForm.getPassword)))
{ return mapping.findForward( "success" );}
else {
return mapping.findForward( "failure" );}
}
}
而webwork的設計則是非侵入的:
public class LoginAction implements Action{
private final static String LOGINFAIL = "loginfail" ;
private final static String SUCCESS = "success" ;
private String passward;
private String username;
public String getPassword(){
return password;
}
public void setPassword(String password){
this .password = password;
}
public String getUsername(){
return username;
}
public void setUsername(String username){
this .username= username;
}
public String execute() throws Exception{
if ( "yeeku" .equalsIgnoreCase(getUsername())&& "password" .equals(getPassword)){
ActionContext ctx= ActionContext.getContext();
Map session = ctx.getSession();
session.put("username" ,getUsername());
return SUCCESS;
}
else return LOGINFAIL;
}
}
相關文章
- 一個非侵入式跟蹤分析程式
- 從Fresco原始碼中找到非侵入式的答案原始碼
- Tideways和xhgui打造PHP非侵入式監控平臺IDEGUIPHP
- 無侵入式工具-SmartTool
- Tideways、xhprof 和 xhgui 打造 PHP 非侵入式監控平臺IDEGUIPHP
- FastHook——巧妙利用動態代理實現非侵入式AOPASTHook
- mockjs 實現前端非侵入式 mock 解決方案MockJS前端
- 非侵入式入侵 —— Web快取汙染與請求走私Web快取
- 利用AspectJ實現Android端非侵入式埋點Android
- Google如何識別侵入式移動應用?Go
- DiagnosticSource DiagnosticListener 無侵入式分散式跟蹤分散式
- 使用phpAnalysis打造PHP應用非侵入式效能分析器PHP
- 專案重構之路——Fresco非侵入式替換GlideIDE
- 非侵入式無許可權應用內懸浮窗的實現
- .NET無侵入式物件池解決方案物件
- Seata 無侵入式分散式事務服務的實現基石-JDBC篇分散式JDBC
- 一個非侵入的Go事務管理庫——如何使用Go
- 一個非侵入的Go事務管理庫——工作原理Go
- Asp-Net-Core開發筆記:使用ActionFilterAttribute實現非侵入式的引數校驗筆記Filter
- Android開發之無侵入式修改TabLayout tabIndicator寬度AndroidTabLayoutIndicator
- 阻塞式程式設計和非阻塞式程式設計區別程式設計
- Spring boot+Swagger配置無侵入式Restful介面(二)Spring BootSwaggerREST
- 無侵入引入Flutter模組Flutter
- 你可以零侵入式實現小程式的全域性狀態管理嗎
- 非可搶佔式和搶佔式程式排程的區別是什麼?
- 函式宣告和函式表示式的區別函式
- js無侵入埋點方案JS
- prop()函式和attr()函式的區別函式
- strcpy函式和memcpy函式的區別函式memcpy
- JavaScript函式宣告和函式表示式區別JavaScript函式
- jquery position()函式和offset()函式的區別jQuery函式
- # 普通函式和箭頭函式的區別函式
- 一個由於侵入框架引起的故障框架
- jquery的$.each()函式和$.map()函式的區別jQuery函式
- StretchBlt函式和BitBlt函式的區別和用法函式
- 正規表示式match()函式和exec()函式的區別函式
- 騰訊 Node.js 非侵入開發框架 Tars.js 2.0 正式釋出Node.js框架
- JavaScript建構函式和普通函式的區別JavaScript函式