23种设计模式简介_设计模式简介
23種設(shè)計(jì)模式簡介
本文是我們名為“ Java設(shè)計(jì)模式 ”的學(xué)院課程的一部分。
在本課程中,您將深入研究大量的設(shè)計(jì)模式,并了解如何在Java中實(shí)現(xiàn)和利用它們。 您將了解模式如此重要的原因,并了解何時(shí)以及如何應(yīng)用模式中的每一個(gè)。 在這里查看 !
目錄
1.簡介 2.什么是設(shè)計(jì)模式 3.為什么使用它們 4.如何選擇和使用一個(gè) 5.模式分類1.簡介
在70年代后期,一位名叫Christopher Alexander的建筑師開始了圖案的概念。 亞歷山大(Alexander)的工作著眼于在特定環(huán)境下找到針對特定力量的解決方案的模式。
Christopher Alexander是一位土木工程師和建筑師,他的模式與建筑物的建筑師有關(guān),但是他所做的工作激發(fā)了人們對面向?qū)ο?#xff08;OO)社區(qū)的興趣,許多創(chuàng)新者開始開發(fā)軟件設(shè)計(jì)模式。 肯特·貝克(Kent Beck)和沃德·坎寧安(Ward Cunningham)是在OOPSLA會議上介紹Smalltalk設(shè)計(jì)模式的少數(shù)人。 詹姆斯·科普林(James Coplien)是另一位積極倡導(dǎo)模式宗旨的人。
很快,OOPSLA的模式社區(qū)開始發(fā)展,因?yàn)樗鼮槌蓡T提供了一個(gè)共享其模式創(chuàng)新和思想的環(huán)境。 圖案運(yùn)動發(fā)展的另一個(gè)重要論壇是肯特·貝克(Kent Beck)和格雷迪·布赫(Grady Booch)創(chuàng)立的Hillside Group。
這就是設(shè)計(jì)模式-旺盛而強(qiáng)大的社區(qū)對專業(yè)知識的積累。 這是最佳的人群采購。 自從最初的GoF工作以來,模式社區(qū)已經(jīng)發(fā)展了十多年,規(guī)模龐大且充滿活力。 Grady Booch和Celso Gonzalez一直在收集他們在行業(yè)中可以找到的每種模式。 到目前為止,他們有2000多個(gè)。
本課程全部關(guān)于設(shè)計(jì)模式。 在本課程中,我們將向您介紹最有用和最著名的設(shè)計(jì)模式。 在本課程中,首先我們將了解真正的設(shè)計(jì)模式。 它們有什么用? 為什么要真正使用它們,以及如何使用它們?
稍后,我們還將看到模式的組織方式,并根據(jù)其行為和結(jié)構(gòu)將其分為不同的組。
在接下來的幾課中,我們將逐一討論不同的設(shè)計(jì)模式。 我們將深入并分析每種設(shè)計(jì)模式,還將看到如何在Java中實(shí)現(xiàn)它們。
2.什么是設(shè)計(jì)模式
作為一個(gè)面向?qū)ο蟮拈_發(fā)人員,我們可能會認(rèn)為我們的代碼包含了面向?qū)ο笳Z言所提供的所有好處。 我們編寫的代碼具有足夠的靈活性,以至于我們可以對其進(jìn)行任何更改,而付出的代價(jià)則更少或更少。 我們的代碼是可重用的,因此我們可以在任何地方重用它而不會遇到任何麻煩。 我們可以輕松地維護(hù)我們的代碼,對代碼部分的任何更改都不會影響代碼的任何其他部分。
不幸的是,這些優(yōu)勢并不是憑空產(chǎn)生的。 作為開發(fā)人員,我們有責(zé)任以一種使我們的代碼靈活,可維護(hù)和可重用的方式設(shè)計(jì)代碼。
設(shè)計(jì)是一門藝術(shù),它伴隨著經(jīng)驗(yàn)。 但是,一些高級和經(jīng)驗(yàn)豐富的開發(fā)人員已經(jīng)在面對和解決類似的設(shè)計(jì)問題時(shí)已經(jīng)編寫了一些解決方案。 這些解決方案稱為設(shè)計(jì)模式。
設(shè)計(jì)模式是設(shè)計(jì)面向?qū)ο蟠a的經(jīng)驗(yàn)。
設(shè)計(jì)模式是對常見問題的通用可重用解決方案。 這些是經(jīng)驗(yàn)豐富的開發(fā)人員使用的最佳實(shí)踐。 模式不是完整的代碼,但可以用作可應(yīng)用于問題的模板。 模式是可重用的; 它們可以應(yīng)用于任何領(lǐng)域的類似設(shè)計(jì)問題。 換句話說,我們可以將模式視為包含重復(fù)出現(xiàn)的設(shè)計(jì)問題及其解決方案的正式文檔。 在一個(gè)實(shí)際環(huán)境中使用的模式也可以在其他環(huán)境中重用。
克里斯托弗曾說過:“每種模式都描述了一個(gè)在我們的環(huán)境中反復(fù)發(fā)生的問題,然后描述了該問題的解決方案的核心,這樣您就可以使用該解決方案一百萬次,而無需做任何事情。以相同的方式兩次”。
通常,模式具有四個(gè)基本要素:
3.為什么使用它們
靈活性:使用設(shè)計(jì)模式,您的代碼將變得靈活。 由于對象之間的松散耦合,這有助于提供正確的抽象級別,這使您的代碼易于更改。
可重用性:松散耦合且內(nèi)聚的對象和類可使您的代碼更可重用。 與高度耦合的代碼相比,這種代碼變得易于測試。
共享詞匯表:共享詞匯表可輕松與其他團(tuán)隊(duì)成員共享您的代碼和思想。 它使與代碼相關(guān)的團(tuán)隊(duì)成員之間有了更多的了解。
捕獲最佳實(shí)踐:設(shè)計(jì)模式捕獲已成功應(yīng)用于問題的解決方案。 通過學(xué)習(xí)這些模式和相關(guān)問題,一個(gè)沒有經(jīng)驗(yàn)的開發(fā)人員會學(xué)到很多有關(guān)軟件設(shè)計(jì)的知識。
設(shè)計(jì)模式使重用成功的設(shè)計(jì)和架構(gòu)變得更加容易。
通過將成熟的技術(shù)表示為設(shè)計(jì)模式,可以使新系統(tǒng)的開發(fā)人員更容易使用它們。 設(shè)計(jì)模式可幫助您選擇使系統(tǒng)可重用的設(shè)計(jì)替代方案,并避免損害可重用性的替代方案。 設(shè)計(jì)模式甚至可以通過提供對類和對象交互及其基本意圖的明確說明來改善現(xiàn)有系統(tǒng)的文檔編制和維護(hù)。 簡而言之,設(shè)計(jì)模式可幫助設(shè)計(jì)師更快地“正確”設(shè)計(jì)。
4.如何選擇和使用一個(gè)
有多種設(shè)計(jì)模式可供選擇; 要選擇一個(gè),您必須對其中的每一個(gè)都有很好的了解。 許多設(shè)計(jì)模式看起來非常相似。 它們解決了幾乎類似類型的設(shè)計(jì)問題,并且具有類似的實(shí)現(xiàn)。 為了實(shí)現(xiàn)針對特定設(shè)計(jì)問題的正確設(shè)計(jì)模式,必須對它們有非常深刻的理解。
首先,您需要確定所面臨的設(shè)計(jì)問題。 設(shè)計(jì)問題可以分為創(chuàng)造性,結(jié)構(gòu)性或行為性。 根據(jù)此類別,您可以過濾模式并選擇適當(dāng)?shù)哪J健?例如:
一種設(shè)計(jì)模式可以用于解決多個(gè)設(shè)計(jì)問題,并且一個(gè)設(shè)計(jì)問題可以通過多個(gè)設(shè)計(jì)模式解決。 可能會有很多設(shè)計(jì)問題和解決方案,但是,選擇合適的模式取決于您對設(shè)計(jì)模式的了解和理解。 這也取決于您已經(jīng)擁有的代碼。
5.模式分類
設(shè)計(jì)模式可以分為以下幾類:
創(chuàng)作模式
創(chuàng)新設(shè)計(jì)模式用于設(shè)計(jì)對象的實(shí)例化過程。 創(chuàng)建模式使用繼承來改變對象的創(chuàng)建。
這些模式中有兩個(gè)重復(fù)出現(xiàn)的主題。 首先,它們都封裝了有關(guān)系統(tǒng)使用哪些具體類的知識。 其次,它們隱藏了這些類的實(shí)例是如何創(chuàng)建和組合的。 整個(gè)系統(tǒng)對對象的所有了解都是由抽象類定義的它們的接口。 因此,創(chuàng)建模式使您在創(chuàng)建內(nèi)容,創(chuàng)建者,創(chuàng)建方式和時(shí)間方面具有很大的靈活性。
在某些情況下,兩個(gè)或多個(gè)模式看起來很適合解決問題。 在其他時(shí)候,這兩種模式可以互補(bǔ)。 Builder可以與其他模式一起使用,以實(shí)現(xiàn)要構(gòu)建的組件。
結(jié)構(gòu)模式
結(jié)構(gòu)模式與類和對象如何構(gòu)成更大的結(jié)構(gòu)有關(guān)。 結(jié)構(gòu)類模式使用繼承來構(gòu)成接口或?qū)崿F(xiàn)。 作為一個(gè)簡單的示例,請考慮多重繼承如何將兩個(gè)或多個(gè)類混合為一個(gè)。 結(jié)果是一個(gè)結(jié)合了其父類屬性的類。 這種模式對于使獨(dú)立開發(fā)的類庫協(xié)同工作特別有用。
結(jié)構(gòu)對象模式不是組成接口或?qū)崿F(xiàn),而是描述組成對象以實(shí)現(xiàn)新功能的方法。 對象合成的附加靈活性來自于在運(yùn)行時(shí)更改合成的能力,而靜態(tài)類合成則無法實(shí)現(xiàn)。
行為模式
行為模式與算法以及對象之間的職責(zé)分配有關(guān)。 行為模式不僅描述對象或類的模式,還描述它們之間的通信模式。 這些模式表征了復(fù)雜的控制流,在運(yùn)行時(shí)很難遵循。 它們將您的注意力從控制流上移開,讓您僅專注于對象的互連方式。
行為對象模式使用對象組成而不是繼承。 一些描述了一組對等對象如何協(xié)作執(zhí)行一項(xiàng)單個(gè)對象無法單獨(dú)執(zhí)行的任務(wù)。 這里的一個(gè)重要問題是對等對象如何相互了解。 對等體可以保持彼此之間的顯式引用,但這將增加它們之間的耦合。 在極端情況下,每個(gè)對象都會彼此了解。 介體模式通過在對等體之間引入介體對象來避免這種情況。 介體提供松耦合所需的間接定向。
下表顯示了各自類別下的模式列表:
| 創(chuàng)作模式 | 結(jié)構(gòu)模式 | 行為模式 |
| 抽象工廠 | 適配器 | 責(zé)任鏈 |
| 建造者 | 橋 | 命令 |
| 工廠方法 | 綜合 | 口譯員 |
| 原型 | 裝飾器 | 迭代器 |
| 辛格爾頓 | 正面 | 調(diào)解員 |
| 飛行重量 | 紀(jì)念 | |
| 代理 | 觀察者 | |
| 州 | ||
| 戰(zhàn)略 | ||
| 模板方法 | ||
| 游客 |
模式清單
翻譯自: https://www.javacodegeeks.com/2015/09/introduction-to-design-patterns.html
23種設(shè)計(jì)模式簡介
總結(jié)
以上是生活随笔為你收集整理的23种设计模式简介_设计模式简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring总结_Spring综合课程总
- 下一篇: 私车公用备案(公车备案私人)