框架和設計模式的區別
有不少程序員每每把框架模式和設計模式混淆,認爲MVC是一種設計模式。實際上它們徹底是不一樣的概念。[7]
框架、設計模式這兩個概念總容易被混淆,其實它們之間仍是有區別的。框架一般是代碼重用,而設計模式是設計重用,架構則介於二者之間,部分代碼重用,部分設計重用,有時分析也可重用。在軟件生產中有三種級別的重用:內部重用,即在同一應用中能公共使用的抽象塊;代碼重用,即將通用模塊組合成庫或工具集,以便在多個應用和領域都能使用;應用框架的重用,即爲專用領域提供通用的或現成的基礎結構,以得到最高級別的重用性。
框架與設計模式雖然類似,但卻有着根本的不一樣。設計模式是對在某種環境中反覆出現的問題以及解決該問題的方案的描述,它比框架更抽象;框架能夠用代碼表示,也能直接執行或複用,而對模式而言只有實例才能用代碼表示;設計模式是比框架更小的元素,一個框架中每每含有一個或多個設計模式,框架老是針對某一特定應用領域,但同一模式卻可適用於各類應用。能夠說,框架是軟件,而設計模式是軟件的知識。
框架模式有哪些?
框架有哪些?
設計模式有哪些?
簡而言之:框架是大智慧,用來對軟件設計進行分工;設計模式是小技巧,對具體問題提出解決方案,以提升代碼複用率,下降耦合度。
Struts
Struts是
Apache軟件基金下Jakarta項目的一部分。Struts框架的主要架構設計和開發者是Craig R.McClanahan。Struts 是Java Web MVC框架中不爭的王者。通過長達九年的發展,Struts已經逐漸成長爲一個穩定、成熟的框架,而且佔有了MVC框架中最大的市場份額。可是Struts某些技術特性上已經落後於新興的MVC框架。面對
Spring MVC、Webwork2這些設計更精密,擴展性更強的框架,Struts受到了史無前例的挑戰。但站在產品開發的角度而言,Struts仍然是最穩妥的選擇。
Struts有一組相互協做的類(組件)、
Servlet以及jsp tag lib組成。基於struts構架的web應用程序基本上符合JSP Model2的設計標準,能夠說是MVC設計模式的一種變化類型。根據上面對framework的描述,很容易理解爲何說Struts是一個web framework,而不單單是一些標記庫的組合。但 Struts 也包含了豐富的標記庫和獨立於該框架工做的實用程序類。Struts有其本身的控制器(
Controller),同時整合了其餘的一些技術去實現模型層(
Model)和視圖層(View)。在模型層,Struts能夠很容易的與數據訪問技術相結合,包括
EJB,
JDBC和Object Relation Bridge。在視圖層,Struts可以與JSP, Velocity Templates,XSL等等這些表示層組件相結合。[8]
Spring
Spring其實是Expert One-on-One J2EE Design and Development 一書中所闡述的設計思想的具體實現。在One-on-One 一書中,
Rod Johnson倡導
J2EE實用主義的
設計思想,並隨書提供了一個初步的開發框架實現(interface21 開發包)。而Spring 正是這一思想的更全面和具體的體現。Rod Johnson 在interface21 開發包的基礎之上,進行了進一步的改造和擴充,使其發展爲一個更加開放、清晰、全面、高效的開發框架。
Spring是一個開源框架,由Rod Johnson建立而且在他的著做《J2EE設計開發編程指南》裏進行了描述。它是爲了解決企業應用開發的複雜性而建立的。Spring使使用基本的JavaBeans來完成之前只可能由EJB完成的事情變得可能了。然而,Spring的用途不只限於服務器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用均可以從Spring中受益。
簡單來講,Spring是一個輕量的控制反轉和麪向切面的容
框架。固然,這個描述有點過於簡單。但它的確歸納出了Spring是作什麼的。[8]
ZF
Zend Framework(簡寫ZF)是由 Zend 公司支持開發的徹底基於 PHP5 的開源PHP開發框架,可用於開發 Web 程序和服務,ZF採用 MVC(Model–View-Controller) 架構模式來分離應用程序中不一樣的部分方便程序的開發和維護。
(MVC框架的詳細使用及其相關具體操做能夠閱讀參考資料:[8]
或者擴展閱讀第二,三,四條。)
.NET
.NET MVC[9]
是微軟官方提供的以MVC模式爲基礎的.NET Web應用程序(Web Application)框架,它由Castle的
MonoRail而來(Castle的MonoRail是由java而來),目前最新版本是.N 4.5。[10]