侵入式和非侵入式的區別


非侵入式設計

一個客戶端的代碼可能包含框架功能和客戶端自己的功能。

侵入式設計,就是設計者將框架功能“推”給客戶端,而非侵入式設計,則是設計者將客戶端的功能“拿”到框架中用。

侵入式設計有時候表現為客戶端需要繼承框架中的類,而非侵入式設計則表現為客戶端實現框架提供的接口。

侵入式設計帶來的最大缺陷是,當你決定重構你的代碼時,發現之前寫過的代碼只能扔掉。而非侵入式設計則不然,之前寫過的代碼仍有價值。 

struts1的設計是侵入式的:

 

 

  1. public class loginAction extends Action{
  2. public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws ActionException{
  3. LoginForm loginForm = (LoginForm)form;
  4. if ( "scott" .equals(loginForm.getUsername() && "tiger" .equals(loginForm.getPassword)))
  5. return mapping.findForward( "success" );}
  6. else {
  7. return mapping.findForward( "failure" );}
  8. }

 


而webwork的設計則是非侵入的:

 

 

    1. public class LoginAction implements Action{
    2. private final static String LOGINFAIL = "loginfail" ;
    3. private final static String SUCCESS = "success" ;
    4. private String passward;
    5. private String username;
    6. public String getPassword(){
    7. return password;
    8. }
    9. public void setPassword(String password){
    10. this .password = password;
    11. }
    12. public String getUsername(){
    13. return username;
    14. }
    15. public void setUsername(String username){
    16. this .username= username;
    17. }
    18. public String execute() throws Exception{
    19. if ( "yeeku" .equalsIgnoreCase(getUsername())&& "password" .equals(getPassword)){
    20. ActionContext ctx= ActionContext.getContext();
    21. Map session = ctx.getSession();
    22. session.put("username" ,getUsername());
    23. return SUCCESS;
    24. }
    25. else return LOGINFAIL;
    26. }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM