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