文章轉自:https://blog.csdn.net/lianjiangwei/article/details/50864636
很多人都知道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?自己決定吧。
小結一下:
