Java設(shè)計模式之綜述篇

字號:

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