設(shè)計(jì)模式代表有經(jīng)驗(yàn)的面向?qū)ο筌浖_(kāi)發(fā)人員使用的最佳實(shí)踐。 設(shè)計(jì)模式是軟件開(kāi)發(fā)人員在軟件開(kāi)發(fā)過(guò)程中面臨的一般問(wèn)題的解決方案。 這些解決方案是由許多軟件開(kāi)發(fā)人員在相當(dāng)長(zhǎng)的時(shí)間內(nèi)通過(guò)試錯(cuò)獲得的。
1994年,有四位作者:Erich Gamma,Richard Helm,Ralph Johnson和John Vlissides發(fā)表了一本題為《設(shè)計(jì)模式 - 可重用的面向?qū)ο筌浖亍返膱D書,該書在軟件開(kāi)發(fā)中開(kāi)創(chuàng)了設(shè)計(jì)模式的概念。
這些作者被統(tǒng)稱為四人幫(GOF)。 根據(jù)這些作者,設(shè)計(jì)模式主要基于以下面向?qū)ο笤O(shè)計(jì)的原則:
設(shè)計(jì)模式在軟件開(kāi)發(fā)中有兩個(gè)主要用途。
設(shè)計(jì)模式提供了標(biāo)準(zhǔn)術(shù)語(yǔ),并且特定于應(yīng)用折場(chǎng)景。 例如,單例設(shè)計(jì)模式表示使用單個(gè)對(duì)象,所以熟悉單一設(shè)計(jì)模式的所有開(kāi)發(fā)人員都將使用單個(gè)對(duì)象,并且他們可以告訴對(duì)方程序正在遵循單例模式。
設(shè)計(jì)模式已經(jīng)經(jīng)過(guò)一段很長(zhǎng)的時(shí)間發(fā)展,它們?yōu)檐浖_(kāi)發(fā)過(guò)程中面臨的某些問(wèn)題提供了最佳解決方案。 學(xué)習(xí)這些模式有助于無(wú)經(jīng)驗(yàn)的開(kāi)發(fā)人員以一種簡(jiǎn)單快捷的方式學(xué)習(xí)軟件設(shè)計(jì)。
根據(jù)設(shè)計(jì)模式參考《設(shè)計(jì)模式 - 可重用的面向?qū)ο筌浖亍?/strong>一書中所述,一共有23
種設(shè)計(jì)模式可以分為三類:創(chuàng)造模式,結(jié)構(gòu)模式和行為模式。在這里我們還將討論另一類設(shè)計(jì)模式:J2EE設(shè)計(jì)模式。
編號(hào) | 模式和說(shuō)明 |
---|---|
1 | 創(chuàng)造模式 -這些設(shè)計(jì)模式提供了一種創(chuàng)建對(duì)象而隱藏創(chuàng)建邏輯的方法,而不是直接使用 new 操作符來(lái)實(shí)例化對(duì)象。 這使程序在決定對(duì)于給定的用例需要?jiǎng)?chuàng)建哪些對(duì)象時(shí)具有更大的靈活性。 |
2 | 結(jié)構(gòu)模式 - 這些設(shè)計(jì)模式涉及類和對(duì)象組成。 繼承概念用于組成接口并定義方法組合對(duì)象以獲得新功能。 |
3 | 行為模式 - 這些設(shè)計(jì)模式是特別側(cè)重于對(duì)象之間的通信。 |
4 | J2EE模式 - 這些設(shè)計(jì)模式特別涉及表示層。 這些模式由Sun Java Center 標(biāo)識(shí)。 |
另外,設(shè)計(jì)模式是與編程語(yǔ)言無(wú)關(guān)的,它是用于解決常見(jiàn)的面向?qū)ο蟮脑O(shè)計(jì)問(wèn)題。
設(shè)計(jì)模式代表一個(gè)想法,而不是一個(gè)實(shí)現(xiàn)。
通過(guò)使用設(shè)計(jì)模式,可以使我們的代碼更靈活,可重用和可維護(hù)。
Java本身內(nèi)部遵循設(shè)計(jì)模式。
在核心java中,主要有三種類型的設(shè)計(jì)模式,它們可進(jìn)一步分為以下子部分:
1. 創(chuàng)造設(shè)計(jì)模式