標籤:style blog http java os strong 資料 ar
最近的學術交流會議都在研究MVC,秉著好好學習,天天向上的心理,時不時的就去蹭會。說實話,原來也有看過MVC的一些相關資料,但是只是淺嘗輒止。而且,因為先學了三層,所以再看MVC的時候,潛意識裡的就認為它們是一個東西。但是MVC是MVC,三層是三層。下面就將昨晚學術交流會議討論的結果以及討論方式展現給大家。 如有不足之處,還望批評指正!
三層劃分為U(介面層)、B(商務邏輯層)、D(資料訪問層),這是我們最先接觸過的分層思想。在學了三層之後,我們又接觸到了MVC ,這時候我們自然而然的會拿MVC與三層來做比較。但是比較之後,出現了下面的兩種結果,所示:
錯誤觀點一:
有部分人直接把三層的U層等同於MVC的View + Controller。 BLL層 + DAL層 等同於 Model。
正確觀點:
BLL層中包含兩部分:一是IBLL,即抽象出來介面部分,定義了要做什嗎?二是BLL,即具體實現部分,定義怎麼做?而Controller是控制器的意思,它負責的是轉寄到哪個視圖和指揮要幹什麼(業務)?具體怎麼幹不用它管。所以實際上Controller = U的一部分 + IBLL。Model =【BLL(實現部分 )+ DAL】—> 容器:對象和操作。View只負責展示資料結果。
錯誤觀點二:
業務劃分上是正確的,錯在MVC的調用關係與三層一樣。
三層調用關係:
1.U、B、D層自上而下依賴, 下層為上層服務;
2.U、B、D平等關係,U層不能越級跳轉到D層。
下面我們來看正確的MVC
在MVC體系中提高了Controller(控制器)的地位。C是View與Model之間相互連信的中樞紐帶。如果沒有Controller的允許,View與Model是不可能進行通訊的。換句話說,只要Controller同意,View可以將資料給Model,Model發生了改變,也能通知給View。Controller掌握View節點間的變化和Model層中對象的操作。
對應我們的java web 裡面,C 相當於是Servlet、Model相當於java Bean、 View 相當於是Jsp。瀏覽器直接發送請求到Servlet,Servlet接受到資料轉到Model層去處理,最後Servlet將儲存的結果轉寄到JSP頁面,再由JSP頁面將資料展示出來。由此可見,Servlet可以對應多個JSP頁面。
綜上所訴:
MVC在結構上發生了徹底的改變,並不同於三層。這種變化在一定程度上帶來了很大的好處。
- 效率提高了,三層是嚴格的調用關係,傳輸或是讀取資料的時候,需要經過層層調用,才能擷取到資料。效率大大降低了。 而View和Model可以進行通訊,傳輸速度加快。
- 解耦合,在Controller的統一管理下,使用者和資料操作完全隔離。
- 靈活性大大提高,Controller可以管理多個View ,這樣當View發生改變時,可以隨意的更換。
總結:
對事物的認識是一個一步一步加深的過程。每一步加深或許會讓我們推翻自己,但是這並不代表前面我們就是錯的。這一次認識的加深一定是建立在被我們推翻的觀點之上。 所以,認識沒有對錯之分,只是說在什麼樣的條件下,就會有什麼樣的認識。