應(yīng)用程序結(jié)構(gòu)和J2EE
J2EE是一個(gè)很成功的技術(shù),它為一些基本的任務(wù)提供了一致的標(biāo)準(zhǔn),例如數(shù)據(jù)庫(kù)連接、分布式應(yīng)用程序等。但是使用J2EE并不能保證開(kāi)發(fā)人員開(kāi)發(fā)出成功的應(yīng)用程序。有些人認(rèn)為J2EE本身就是一種框架技術(shù),但是這種認(rèn)識(shí)是不正確的,我們應(yīng)該意識(shí)到J2EE并沒(méi)有提供一個(gè)能夠幫助開(kāi)發(fā)人員開(kāi)發(fā)出高質(zhì)量應(yīng)用程序的框架,因此很多有經(jīng)驗(yàn)的開(kāi)發(fā)人員通過(guò)利用設(shè)計(jì)模式來(lái)彌補(bǔ)這一缺項(xiàng)。
設(shè)計(jì)模式
在開(kāi)發(fā)人員的圈子中,大家通過(guò)相互交流在開(kāi)發(fā)過(guò)程中所遇到的問(wèn)題以及解決方法來(lái)豐富整個(gè)圈子的經(jīng)驗(yàn)。而設(shè)計(jì)模式就是在這樣的情況下產(chǎn)生的。一個(gè)設(shè)計(jì)模式必然是針對(duì)某個(gè)特定的問(wèn)題的,這個(gè)問(wèn)題的解決方案以及這樣解決問(wèn)題產(chǎn)生的后果。在解決利用J2EE進(jìn)行程序開(kāi)發(fā)中出現(xiàn)的問(wèn)題的過(guò)程中,人們把設(shè)計(jì)模式分為兩類,一種是通用開(kāi)發(fā)模式,一種是為了解決特定的J2EE問(wèn)題的模式。下面讓我們來(lái)看一看每一種類型的開(kāi)發(fā)模式都包含了哪些內(nèi)容。
J2EE設(shè)計(jì)模式在過(guò)去幾年中隨著Java開(kāi)發(fā)人員經(jīng)驗(yàn)的不斷成長(zhǎng)而發(fā)展。這些設(shè)計(jì)模式是針對(duì)使用各種J2EE技術(shù)時(shí)可能出現(xiàn)的問(wèn)題提出的,它們能夠幫助開(kāi)發(fā)人員構(gòu)造出應(yīng)用程序框架的要求。例如,F(xiàn)ront Controller(前端控件)模式將servlet代碼的開(kāi)發(fā)轉(zhuǎn)化為在圖形用戶界面下的開(kāi)發(fā)。但是需要記住J2EE設(shè)計(jì)模型解決了那些在J2EE項(xiàng)目中最可能出現(xiàn)的問(wèn)題。如果你在J2EE遇到的問(wèn)題很特殊,很有可能沒(méi)有相應(yīng)的設(shè)計(jì)模型來(lái)解決它。 mda.com
軟件開(kāi)發(fā)設(shè)計(jì)模式又被分為兩種,一種是通用的面向?qū)ο笤O(shè)計(jì)模式。例如工廠(Factory)模式是一種面向?qū)ο蟮脑O(shè)計(jì)模式,它將對(duì)象的創(chuàng)建封裝起來(lái),使對(duì)象能夠重用,這樣就可以減少程序占用的系統(tǒng)資源。而另一種是基于Java的設(shè)計(jì)模式,這些設(shè)計(jì)模式要么是和Java的語(yǔ)言特性結(jié)合得很緊,要么是面向?qū)ο蠹夹g(shù)在Java中的深化。不要以為軟件設(shè)計(jì)模式相對(duì)獨(dú)立于J2EE就認(rèn)為它們不重要,通常它們比J2EE設(shè)計(jì)模式更重要。這是因?yàn)椋?
1)J2EE設(shè)計(jì)模式是近幾年才出現(xiàn)的,并且在不斷變化,而軟件開(kāi)發(fā)設(shè)計(jì)模式經(jīng)過(guò)了長(zhǎng)時(shí)間的考驗(yàn),比前者更加成熟和完善;
2)有些J2EE設(shè)計(jì)模式是建立在某些軟件開(kāi)發(fā)設(shè)計(jì)模式之上的;
3)軟件開(kāi)發(fā)模式為J2EE設(shè)計(jì)模式提供了堅(jiān)實(shí)的基礎(chǔ)。它的應(yīng)用將影響到整個(gè)結(jié)構(gòu)的穩(wěn)定性和可擴(kuò)充性。
在實(shí)際應(yīng)用中,設(shè)計(jì)模式并不是一段具體的代碼。設(shè)計(jì)模式通常是在設(shè)計(jì)說(shuō)明書中描述。將設(shè)計(jì)模式應(yīng)用到系統(tǒng)中的真正挑戰(zhàn)在于如何在系統(tǒng)中應(yīng)用模式中的思想。這些思想必須被應(yīng)用到恰當(dāng)?shù)沫h(huán)境中。
根據(jù)設(shè)計(jì)模式的所解決的問(wèn)題,又可以分為以下幾個(gè)類型:
· 創(chuàng)建類型:創(chuàng)建類型的模式都是用于創(chuàng)建類的實(shí)例。但是和通過(guò)new來(lái)創(chuàng)建實(shí)例不同,這些模式提供了更加靈活的方式,是程序能夠根據(jù)特定的情況創(chuàng)建特定的類。
· 結(jié)構(gòu)類型:結(jié)構(gòu)類型的模式幫助開(kāi)發(fā)人員將簡(jiǎn)單對(duì)象組合在一起以后的更加復(fù)雜的結(jié)構(gòu)。
· 行為類型:行為類型的模式幫助開(kāi)發(fā)人員控制類之間的通訊。
所有創(chuàng)建類型的模式都和如何有效地創(chuàng)建類的實(shí)例相關(guān)。在Java中,如果開(kāi)發(fā)人員要生成一個(gè)類的實(shí)例,最簡(jiǎn)單的方法是使用new關(guān)鍵字:
MyFoo = new Foo(); // 生成一個(gè)Foo的實(shí)例
這種方法只能夠在程序中生成固定的類。但是在很多情況下,程序需要根據(jù)不同的情況生成不同的類的實(shí)例,這就需要將實(shí)例的生成過(guò)程抽象到一個(gè)特殊的創(chuàng)建類中,由該類在運(yùn)行時(shí)決定生成哪種類的實(shí)例。這樣使得程序有更好的靈活性和通用性。