模式和框架(引用)

fsz521job發表於2006-07-04
現在軟體設計裡到處都是模式,框架。下面說明一下他們的區別[@more@]

1.什麼是模式?
模式,即pattern。其實就是解決某一類問題的方法論。你把解決某類問題的方法總結歸納到理論高度,那就是模式。
Alexander給出的經典定義是:每個模式都描述了一個在我們的環境中不斷出現的問題,然後描述了該問題的解決方案的核心。透過這種方式,你可以無數次地使用那些已有的解決方案,無需在重複相同的工作。
模式有不同的領域,建築領域有建築模式,軟體設計領域也有設計模式。當一個領域逐漸成熟的時候,自然會出現很多模式。

什麼是框架?
框架,即framework。其實就是某種應用的半成品,就是一組元件,供你選用完成你自己的系統。簡單說就是使用別人搭好的舞臺,你來做表演。而且,框架一般是成熟的,不斷升級的軟體。


2.為什麼要用模式?
因為模式是一種指導,在一個良好的指導下,有助於你完成任務,有助於你作出一個優良的設計方案,達到事半功倍的效果。而且會得到解決問題的最佳辦法。

為什麼要用框架?
因為軟體系統發展到今天已經很複雜了,特別是伺服器端軟體,設計到的知識,內容,問題太多。在某些方面使用別人成熟的框架,就相當於讓別人幫你完成一些基礎工作,你只需要集中精力完成系統的業務邏輯設計。而且框架一般是成熟,穩健的,他可以處理系統很多細節問題,比如,事物處理,安全性,資料流控制等問題。還有框架一般都經過很多人使用,所以結構很好,所以擴充套件性也很好,而且它是不斷升級的,你可以直接享受別人升級程式碼帶來的好處。
框架一般處在低層應用平臺(如J2EE)和高層業務邏輯之間的中間層。

軟體為什麼要分層?
為了實現“高內聚、低耦合”。把問題劃分開來各個解決,易於控制,易於延展,易於分配資源…總之好處很多啦:)。

3. 以下所述主要是JAVA,J2EE方面的模式和框架:
常見的設計模式有什麼?
首先,你要了解的是GOF的《設計模式--可複用物件導向軟體的基礎》一書(這個可以說是程式設計師必備的了),注意:GOF不是一個人,而是指四個人。它的原意是Gangs Of Four,就是“四人幫”,就是指此書的四個作者:Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides。這本書講了23種主要的模式,包括:抽象工廠、介面卡、外觀模式等。
還有其他的很多模式,估計有100多種。
軟體設計模式太多,就我的理解簡單說一下最常見的MVC模式。
MVC模式是1996年由Buschmann提出的:
模型(Model):就是封裝資料和所有基於對這些資料的操作。
檢視(View):就是封裝的是對資料顯示,即使用者介面。
控制器(Control):就是封裝外界作用於模型的操作和對資料流向的控制等。

另外:
RUP(Rational Unified Process)軟體統一過程,XP(Extreme Programming)極端程式設計,這些通常被叫做“過程方法”,是一種軟體專案實施過程的方法論,它是針對軟體專案的實施過程提出的方法策略。也是另一個角度的模式。

4. 常見的JAVA框架有什麼?
WAF:
全稱:WEB APPLICATION FRAMEWORK
主要應用方面:EJB層,(WEB層也有,但是比較弱)。
主要應用技術:EJB等
出處:
簡述:這是SUN在展示J2EE平臺時所用的例子PetStore(寵物商店系統)裡面的框架。是SUN藍皮書例子程式中提出的應用框架。它實現了 MVC和其他良好的設計模式。SUN的網站上有技術資料,最好下載PetStore來研究,WEBLOGIC裡自帶此係統,原始碼在beaweblogic700samplesserversrcpetstore。這是學習瞭解J2EE的首選框架。
免費。

Struts:
主要應用方面:WEB層。
主要應用技術:JSP,TagLib,JavaBean,XML等
出處:
簡述:這是APACHE的開源專案,目前應用很廣泛。基於MVC模式,結構很好,基於JSP。Jbuilder8裡已經整合了STRUTS1.02的製作。
免費。

簡述WAF+STRUTS結合的例子:WEB層用STRUTS,EJB層用WAF:
JSP(TagLib)——>ActionForm——>Action ——>
Event——>EJBAction——>EJB ——>DAO——>Database
JSP(TagLib) (forward)
Turbine:
主要應用方面:WEB層。
主要應用技術:servlet等
出處:
簡述:這是APACHE的開源專案。基於SERVLET。據說速度比較快,基於service(pluggable implementation可插拔的執行元件)的方式提供各種服務。
免費。

COCOON:
主要應用方面:WEB層。
主要應用技術:XML,XSP,servlet等
出處:
簡述:這是APACHE的一個開源專案。基於XML,基於XSP(通俗地說,XSP是在XML靜態文件中加入Java程式段後形成的動態XML文件。)。特點是可以與多種資料來源互動,包括檔案系統,資料庫,LDAP,XML資源庫,網路資料來源等。
免費。

ECHO:
主要應用方面:WEB層。
主要應用技術:servlet等
出處:
簡述:nextapp公司的一個開源專案。基於SERVLET。頁面可以做的很漂亮,結合echopoint,可以作出很多圖形效果(裡面用了jfreechart包)。使用SWING的思想來作網頁,把HTML當作JAVA的類來做。但是大量使用Session,頁面分幀(Frame)很多,系統資源消耗很大。
免費。

JATO:
全稱:SUN ONE Application Framework
主要應用方面:WEB層。
主要應用技術:JSP,TagLib,JavaBean等
出處:
簡述:這是SUN推出的一個商業性框架,一看名字就知道是結合SUN ONE的平臺推出的。我下載了JATO2.0看了一下,感覺有些簡單,使用了JSP+TagLib+JavaBean。如他的DOC所說JATO是適合用在小的WEB應用裡。
免費。

TCF:
全稱:Thin-Client Framework
主要應用方面:JAVA GUI。
主要應用技術:JAVA application等
出處:
簡述:這是IBM出的一個框架。基於MVC模式,基於JAVA Application。推薦一篇介紹文章:http://www-900.ibm.com/developerWorks/cn/java/j-tcf1/index.shtml
收費:每個企業物件license:2000美元。


5.其實本文的目的在於“拋磚引玉”,希望各路高手請你們把各種框架的特點和出處羅列一下 ,供大家參考,選用。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/300209/viewspace-846992/,如需轉載,請註明出處,否則將追究法律責任。

相關文章