【J2EE】:MVC是框架?是設計模式?是架構?還是……

連江偉發表於2016-03-14

上篇部落格簡單聊了聊MVC模式,但是有一個很重要的問題我沒有提到,那就是對MVC的定位,它是什麼?


很多人都知道MVC,都知道就是把將資料和顯示分離,知道Model—View—Controller,但是讓你說MVC是什麼東西,你可能不知如何回答。那麼MVC到底是什麼玩意呢?框架?設計模式?架構?都不是。


可以肯定的說(個人認為),MVC不是框架,不是設計模式,更不是架構,它僅僅是一種架構模式。它不描述系統架構,也不指定使用什麼技術,僅僅是描述系統架構的一種模式,類似於AOP、IOC、ORM等等,具體的框架技術則是基於這些模式的一些實現而已,比如基於MVC模式的框架有著名的Struts、Spring MVC、JSF、Tapestry以及比較老的WebWork等等,基於ORM模式的框架有Hibernate、MyBatis、iBatis以及.NET比較有名的Entity Framework等等。


        我畫了一張圖來描述這幾個概念之間的關係,主要是描述包含關係,個人理解而已:
 

設計模式(Design pattern:是一套被反覆使用、多數人知道的、經過分類編目的、程式碼設計經驗的總結。從定義上看,它涉及到了程式碼級別,側重於解決實際的現實的問題。比如我們應該如何為不同的商品設計折扣的方式,採用策略模式唄。


框架(Framework):是整個或部分系統的可重用設計,表現為一組抽象構件及構件例項間互動的方法;另一種定義認為,框架是可被應用開發者定製的應用骨架。前者是從應用方面而後者是從目的方面給出的定義。從定義看,它涉及到了一堆構件,以及這些構件之間的依賴關係、責任分配和流程控制等,說白了就是一堆類而已。這些類以及之間的關係構成了框架。比如想要讓使用者通過Servlet來訪問頁面,怎麼辦?用Struts唄。


架構模式(架構風格):一個架構模式描述軟體系統裡的基本的結構組織或綱要。架構模式提供一些呈先定義好的子系統,指定它們的責任,並給出把它們組織在一起的法則和指南。從定義上來看,它是在指導我們如何組織程式碼,是一種具有指導意義的思想,比如要解決系統的資料與顯示分離的問題,那就使用MVC模式唄。


軟體架構(software architecture):是一系列相關的抽象模式,用於指導大型軟體系統各個方面的設計。 軟體架構是一個系統的草圖。軟體架構描述的物件是直接構成系統的抽象元件。各個元件之間的連線則明確和相對細緻地描述元件之間的通訊。在實現階段,這些抽象元件被細化為實際的元件,比如具體某個類或者物件。比如,我們要開發一個線上測評系統,使用什麼架構呢?輕量級的SSH還是重量級的EJB?自己決定吧。


小結一下:


其實吧,軟體這個行業的很多名詞都沒有特別準確的定義,好多概念是十分抽象和難理解的。但是回過頭來看,我們不是做理論研究的,只要我們能夠在問題的出現的場景中,使用最為合適的技術去解決它,就可以了。軟體這行,紙上談兵絕對是不行的,能為企業和公司解決實際問題,帶來經濟效益,促進資訊科技轉化為生產力,實現中國夢,乃我們最終的夙願。

相關文章