什么是模式?什么是框架?(簡述)

字號:

現(xiàn)在軟件設(shè)計里到處都是模式,框架。有次朋友問什么是模式?我也在學(xué)習(xí)中,就我的學(xué)習(xí)經(jīng)驗,給出以下小結(jié)。(注意:個人觀點,僅供參考,歡迎指正。)
    1.什么是模式?
    模式,即pattern。其實就是解決某一類問題的方法論。你把解決某類問題的方法總結(jié)歸納到理論高度,那就是模式。
    Alexander給出的經(jīng)典定義是:每個模式都描述了一個在我們的環(huán)境中不斷出現(xiàn)的問題,然后描述了該問題的解決方案的核心。通過這種方式,你可以無數(shù)次地使用那些已有的解決方案,無需在重復(fù)相同的工作。
    模式有不同的領(lǐng)域,建筑領(lǐng)域有建筑模式,軟件設(shè)計領(lǐng)域也有設(shè)計模式。當(dāng)一個領(lǐng)域逐漸成熟的時候,自然會出現(xiàn)很多模式。
    什么是框架?
    框架,即framework。其實就是某種應(yīng)用的半成品,就是一組組件,供你選用完成你自己的系統(tǒng)。簡單說就是使用別人搭好的舞臺,你來做表演。而且,框架一般是成熟的,不斷升級的軟件。
    2.為什么要用模式?
    因為模式是一種指導(dǎo),在一個良好的指導(dǎo)下,有助于你完成任務(wù),有助于你作出一個優(yōu)良的設(shè)計方案,達到事半功倍的效果。而且會得到解決問題的辦法。
    為什么要用框架?
    因為軟件系統(tǒng)發(fā)展到今天已經(jīng)很復(fù)雜了,特別是服務(wù)器端軟件,設(shè)計到的知識,內(nèi)容,問題太多。在某些方面使用別人成熟的框架,就相當(dāng)于讓別人幫你完成一些基礎(chǔ)工作,你只需要集中精力完成系統(tǒng)的業(yè)務(wù)邏輯設(shè)計。而且框架一般是成熟,穩(wěn)健的,他可以處理系統(tǒng)很多細(xì)節(jié)問題,比如,事物處理,安全性,數(shù)據(jù)流控制等問題。還有框架一般都經(jīng)過很多人使用,所以結(jié)構(gòu)很好,所以擴展性也很好,而且它是不斷升級的,你可以直接享受別人升級代碼帶來的好處。
    框架一般處在低層應(yīng)用平臺(如J2EE)和高層業(yè)務(wù)邏輯之間的中間層。
    軟件為什么要分層?
    為了實現(xiàn)“高內(nèi)聚、低耦合”。把問題劃分開來各個解決,易于控制,易于延展,易于分配資源…總之好處很多啦:)。
    3. 以下所述主要是JAVA,J2EE方面的模式和框架:
    常見的設(shè)計模式有什么?
    首先,你要了解的是GOF的《設(shè)計模式--可復(fù)用面向?qū)ο筌浖幕A(chǔ)》一書(這個可以說是程序員必備的了),注意:GOF不是一個人,而是指四個人。它的原意是Gangs Of Four,就是“四人幫”,就是指此書的四個作者:Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides。這本書講了23種主要的模式,包括:抽象工廠、適配器、外觀模式等。
    還有其他的很多模式,估計有100多種?!?BR>    軟件設(shè)計模式太多,就我的理解簡單說一下最常見的MVC模式。
    MVC模式是1996年由Buschmann提出的:
    模型(Model):就是封裝數(shù)據(jù)和所有基于對這些數(shù)據(jù)的操作。
    視圖(View):就是封裝的是對數(shù)據(jù)顯示,即用戶界面。
    控制器(Control):就是封裝外界作用于模型的操作和對數(shù)據(jù)流向的控制等。
    另外:
    RUP(Rational Unified Process)軟件統(tǒng)一過程,XP(Extreme Programming)極端編程,這些通常被叫做“過程方法”,是一種軟件項目實施過程的方法論,它是針對軟件項目的實施過程提出的方法策略。也是另一個角度的模式。
    4. 常見的JAVA框架有什么?
    WAF:
    全稱:WEB APPLICATION FRAMEWORK
    主要應(yīng)用方面:EJB層,(WEB層也有,但是比較弱)。
    主要應(yīng)用技術(shù):EJB等
    出處:http://java.sun.com/blueprints/code/index.html
    簡述:這是SUN在展示J2EE平臺時所用的例子PetStore(寵物商店系統(tǒng))里面的框架。是SUN藍(lán)皮書例子程序中提出的應(yīng)用框架。它實現(xiàn)了 MVC和其他良好的設(shè)計模式。SUN的網(wǎng)站上有技術(shù)資料,下載PetStore來研究,WEBLOGIC里自帶此系統(tǒng),源碼在bea\ weblogic700\samples\server\src\petstore。這是學(xué)習(xí)了解J2EE的首選框架。
    免費。
    Struts:
    主要應(yīng)用方面:WEB層。
    主要應(yīng)用技術(shù):JSP,TagLib,JavaBean,XML等
    出處:http://jakarta.apache.org/struts/index.html
    簡述:這是APACHE的開源項目,目前應(yīng)用很廣泛?;贛VC模式,結(jié)構(gòu)很好,基于JSP。Jbuilder8里已經(jīng)集成了STRUTS1.02的制作。
    免費。