淺析Java開發模式—Model1、Model2和三層


"解耦"的思想一直是我們倡導的,但在實際項目中怎樣去做?這是需要我們去好好思考的。下面以Model1Model2、三層為切入點,對比下去了解解耦的思想。

 

 Model1

 

    使用JSP頁面和JavaBean相結合的方式,由JSP頁面來接收客戶端請求,用JavaBean或其他服務完成業務邏輯、數據庫操作和返回頁面。我們這里的JavaBean主要是完成特定功能的Java類。

 

 優點:架構簡單,比較適合小型項目開發      

 缺點:JSP職責不單一,職責過重,不便於維護

 

Model2MVC

 

    Model1雖然在一定程度上解耦了,但JSP依舊即要負責頁面控制,又要負責邏輯處理,職責不單一。此時Model2應運而生,使得各個部分各司其職。 Model2基於MVC模式:

    Controller:應用程序中用戶交互部分(Servlet

    Model:應用程序數據邏輯部分(JavaBeans

    View:數據顯示部分(JSP

 

   

 

優點:職責清晰,較適合於大型項目架構          

缺點:分層較多,不適合小型項目開發

 

區別:

    Model2Model1的基礎上分離了控制,將JSP中的邏輯操作部分分離出來,這樣做不僅減輕了JSP的職責,而且更有利於分工開發,耦合性降低。

    對於復雜的Web應用開發,更適合使用Model2;而對於小型應用,使用Model1比較簡單。

 

三層

 

        Model2巧妙的將JSP中的業務邏輯部分分給了Servlet,使得頁面控制與邏輯處理徹底分離,達到了部分解耦的目的。但我們現實項目開發中,往往在Model2的基礎上又進行了分層。將業務邏輯細分為業務邏輯和持久化邏輯兩層。

 

       往往使用一個Dao接口隱藏持久化操作的細節,業務對象不需要了解底層的數據庫持久化知識。使得業務邏輯與持久化邏輯分離,業務邏輯通常關系的是應用程序的核心流程和業務規則,持久化邏輯關注的是如何訪問和操作持久化數據。

        表示層,JSP/Servlet

   業務邏輯層:業務規則

   持久化層:主要包裝持久化的邏輯 

   分層主要目的是為了好管理,能更好的適應需求的變換,能夠更好的進行人員分工。

      表示層、業務邏輯層、持久層是自上而下的依賴,依賴於抽象

 

         程序對JDBC的依賴就是依賴了他的抽象層,如:連接數據庫用的Connection,我們只能看到其接口,而不能看到其實現,具體的實現封裝在JDBC包中。JDBC已經包裝好,我們只需要引入不同實現,以適應數據庫的變化。

 

總結:

     

         

         Model1Model2、三層是在解耦的基礎上一步步進化而來,通過解耦我們可以進行進一步的抽象,以應對現實需求的變動。


免責聲明!

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



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