【Java架構學習】Model1和Model2討論


    在Java的學習中。這兩個詞的頻率出現的非常高。那就是Model1和Model2。那么到底什么是Model1,什么是Model2呢?我們是不是又非常自然接受這兩個概念。可是不知道其所以然呢?今天我們就來好好討論一下,何為Model1,何為Model2,它們二者之間又有什么差別呢?

    在正式開始之前,我想說一點題外話。我發現我們的學習有時候會陷入這樣一種境界,比方說出現一個新概念,我們會很自然的接受。然后不問所以然的就那么去用。

被問及為什么這樣寫這樣用的時候?“不知道,我最開始學的時候就是這樣學的,所以這么用”。

    比方最開始學習編程的時候。我們知道要new對象,用對象去調方法。

但是就是這個new的過程。我們真的懂嗎?舉個樣例,要new一個user用戶。我們會這樣寫:User user = new User()  都知道這么寫,都知道這樣能new出user對象,然后用這個對象去調方法就能夠了,就是非常固化的一種思維習慣讓你去適應,知道“哦,我這么寫就能得出我想要的東西”。但是為什么這么寫,這個new是什么意思想過嗎?而這樣的誤區會在后面的學習中越來越殘酷的顯露出來。就是想當然所以然的去接受。然后不加思考的去固化使用,這似乎是我們普遍存在的問題。最起碼。在我身上得到了非常好的體現。

    要知道,我們在學習之初能夠得過且過,可是有句話,我師傅說的,當一個東西出現第一遍的時候,你能夠放過它;出現第二遍的時候你也能夠放過他,出現第三遍的時候你可能看着不僅眼熟並且有必要好好研究它了。所以較之曾經非常自然的接受。如今我們也來挖挖Model1和Model2的老底。

    我之所以把MVC放在前面一篇文章寫出來。是由於這篇文章跟MVC是有聯系的。這個我們后面再說。

今天這篇文章我們就好好把Model1和Model2研究明確。把它們二者的差別分析好,以便於更好的吸收后面的內容。

    以下這個是Model1的時序圖。重點要了解它的調用流程和它由幾部分組成。

    這個是Model2的時序圖。

這個跟Model1一比較,Model1就顯得非常遜了有沒有?

    要把Model1和Model2了解清楚。就不得不把MVC揪出來。隨着學習的深入。我們發現:

    Model1相當於JSP+JavaBean;

    Model2相當於JSP+Servlet+JavaBean;

    可能有人會問了,JavaBean是什么啊?JavaBean在MVC設計模型中是模型層,即Model。是用來設置數據的屬性和行為的,然后提供獲取屬性和設置屬性的get/set方法。所以你再看上面兩張圖的時候,是不是認為熟悉了非常多?

    所以對於Model1而言。它的模式相當於JSP+JavaBean,它把業務邏輯也放到視圖里面,相對於MVC而言。Model1僅包括M和V。

從整個調用流程而言。JSP獲取表單數據並提交,調用業務邏輯進行處理,處理完畢之后返回給JSP,JSP顯示給用戶。Model1是以JSP為中心附加的JavaBean,這樣的開發模式讓全部的業務邏輯和界面顯示都依賴於JSP,數據整理靠JavaBean完畢。

這樣非常不安全,並且不好維護。所以Model適合小型項目開發。

    而對於Model2來說它是MVC的開發模式。

事實上Model1也一定程度上實現了MVC,即JSP將控制層和顯示層合二為一了,JavaBean為模型層。而Model2呢則把控制層Servlet單獨划分出來了。專門負責業務流程的控制,接受頁面請求,創建所需的JavaBean實例,並將處理后的數據返回給JSP。所以對整個調用流程而言:Servlet獲取表單數據並提交,調用業務邏輯進行處理。把處理完成的數據返回給Servlet,Servlet再調用JSP傳遞參數,最后JSP將結果顯示給用戶。所以對Model2而言適合大型的項目開發.

    Model1和Model2是SUN公司對於MVC模式所先后推出的兩種規范,事實上沒有孰優孰劣之分。僅僅是在不同的時期為了適應不同的項目需求所做的調整。

有的項目適合用Model1做。用Model2反而顯得笨拙。有的項目Model1做就不如Model2來的得心應手。生活也是一樣。每一個人都有各自的特長,各自的不足,不必后悔更不必比較出輸贏,正確的認識自己。在合適的人生“大項目”展現出自己的一技之長,才是我們真正該認識到的。

 

 

 

 


免責聲明!

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



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