框架和設計模式的區別
框架、設計模式這兩個概念總容易被混淆,其實它們之間還是有區別的。框架通常是代碼重用,而設計模式是設計重用,架構則介於兩者之間,部分代碼重用,部分設計重用,有時分析也可重用。在軟件生產中有三種級別的重用:內部重用,即在同一應用中能公共使用的抽象塊;代碼重用,即將通用模塊組合成庫或工具集,以便在多個應用和領域都能使用;應用框架的重用,即為專用領域提供通用的或現成的基礎結構,以獲得最高級別的重用性。
框架與設計模式雖然相似,但卻有着根本的不同。設計模式是對在某種環境中反復出現的問題以及解決該問題的方案的描述,它比框架更抽象;框架可以用代碼表示,也能直接執行或復用,而對模式而言只有實例才能用代碼表示;設計模式是比框架更小的元素,一個框架中往往含有一個或多個設計模式,框架總是針對某一特定應用領域,但同一模式卻可適用於各種應用。可以說,框架是軟件,而設計模式是軟件的知識。
框架模式有哪些?
框架有哪些?
設計模式有哪些?
工廠模式、適配器模式、策略模式等等
簡而言之:框架是大智慧,用來對軟件設計進行分工;設計模式是小技巧,對具體問題提出解決方案,以提高代碼復用率,降低耦合度。
常見框架
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是一個輕量的控制反轉和面向切面的容
ZF
Zend Framework(簡寫ZF)是由 Zend 公司支持開發的完全基於 PHP5 的開源PHP開發框架,可用於開發 Web 程序和服務,ZF采用 MVC(Model–View-Controller) 架構模式來分離應用程序中不同的部分方便程序的開發和維護。
.NET
.NET MVC[9]
是微軟官方提供的以MVC模式為基礎的.NET Web應用程序(Web Application)框架,它由Castle的
MonoRail而來(Castle的MonoRail是由java而來),目前最新版本是.N 4.5。[10]