現在軟件設計裡到處都是模式
框架
有次朋友問什麼是模式?我也在學習中
就我的學習經驗
給出以下小結
(注意
個人觀點
僅供參考
歡迎指正
)
.什麼是模式? 模式
即pattern
其實就是解決某一類問題的方法論
你把解決某類問題的方法總結歸納到理論高度
那就是模式
Alexander給出的經典定義是
每個模式都描述了一個在我們的環境中不斷出現的問題
然後描述了該問題的解決方案的核心
通過這種方式
你可以無數次地使用那些已有的解決方案
無需在重復相同的工作
模式有不同的領域
建築領域有建築模式
軟件設計領域也有設計模式
當一個領域逐漸成熟的時候
自然會出現很多模式
什麼是框架?
框架
即framework
其實就是某種應用的半成品
就是一組組件
供你選用完成你自己的系統
簡單說就是使用別人搭好的舞台
你來做表演
而且
框架一般是成熟的
不斷升級的軟件
.為什麼要用模式?
因為模式是一種指導
在一個良好的指導下
有助於你完成任務
有助於你作出一個優良的設計方案
達到事半功倍的效果
而且會得到解決問題的最佳辦法
為什麼要用框架?
因為軟件系統發展到今天已經很復雜了
特別是服務器端軟件
設計到的知識
內容
問題太多
在某些方面使用別人成熟的框架
就相當於讓別人幫你完成一些基礎工作
你只需要集中精力完成系統的業務邏輯設計
而且框架一般是成熟
穩健的
他可以處理系統很多細節問題
比如
事物處理
安全性
數據流控制等問題
還有框架一般都經過很多人使用
所以結構很好
所以擴展性也很好
而且它是不斷升級的
你可以直接享受別人升級代碼帶來的好處
框架一般處在低層應用平台(如J
EE)和高層業務邏輯之間的中間層
軟件為什麼要分層?
為了實現
高內聚
低耦合
把問題劃分開來各個解決
易於控制
易於延展
易於分配資源…總之好處很多啦
)
.以下所述主要是JAVAJEE方面的模式和框架
常見的設計模式有什麼?
首先
你要了解的是GOF的《設計模式
可復用面向對象軟件的基礎》一書(這個可以說是程序員必備的了)
注意
GOF不是一個人
而是指四個人
它的原意是Gangs Of Four
就是
四人幫
就是指此書的四個作者
Erich Gamma
Richard Helm
Ralph Johnson
John Vlissides
這本書講了
種主要的模式
包括
抽象工廠
適配器
外觀模式等
還有其他的很多模式
估計有
多種
軟件設計模式太多
就我的理解簡單說一下最常見的MVC模式
MVC模式是
年由Buschmann提出的
模型(Model)
就是封裝數據和所有基於對這些數據的操作
視圖(View)
就是封裝的是對數據顯示
即用戶界面
控制器(Control)
就是封裝外界作用於模型的操作和對數據流向的控制等
另外
RUP(Rational Unified Process)軟件統一過程
XP(Extreme Programming)極端編程
這些通常被叫做
過程方法
是一種軟件項目實施過程的方法論
它是針對軟件項目的實施過程提出的方法策略
也是另一個角度的模式
.常見的JAVA框架有什麼?
WAF
全稱
WEB APPLICATION FRAMEWORK
主要應用方面
EJB層
(WEB層也有
但是比較弱)
主要應用技術
EJB等
出處
簡述
這是SUN在展示J
EE平台時所用的例子PetStore(寵物商店系統)裡面的框架
是SUN藍皮書例子程序中提出的應用框架
它實現了 MVC和其他良好的設計模式
SUN的網站上有技術資料
最好下載PetStore來研究
WEBLOGIC裡自帶此系統
源碼在bea\weblogic
\samples\server\src\petstore
這是學習了解J
EE的首選框架
Struts:
主要應用方面
WEB層
主要應用技術
JSP
TagLib
JavaBean
XML等
出處
簡述
這是APACHE的開源項目
目前應用很廣泛
基於MVC模式
結構很好
基於JSP
Jbuilder
裡已經集成了STRUTS
的制作
簡述WAF+STRUTS結合的例子
WEB層用STRUTS
EJB層用WAF
JSP(TagLib)——>ActionForm——>Action ——> Event——>EJBAction——>EJB ——>DAO——>Database JSP(TagLib) (forward) <——Action <——EventResponse<——
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的平台推出的
我下載了JATO
看了一下
感覺有些簡單
使用了JSP+TagLib+JavaBean
如他的DOC所說JATO是適合用在小的WEB應用裡
TCF
全稱
Thin
Client Framework
主要應用方面
JAVA GUI
主要應用技術
JAVA application等
出處
簡述
這是IBM出的一個框架
基於MVC模式
基於JAVA Application
推薦一篇介紹文章
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27561.html