模式概念在編程中的應(yīng)用_第1頁
模式概念在編程中的應(yīng)用_第2頁
模式概念在編程中的應(yīng)用_第3頁
模式概念在編程中的應(yīng)用_第4頁
模式概念在編程中的應(yīng)用_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

5模式概念在編程中的應(yīng)用匯報人:XX2023-12-24CATALOGUE目錄模式概念概述創(chuàng)建型模式在編程中應(yīng)用結(jié)構(gòu)型模式在編程中應(yīng)用行為型模式在編程中應(yīng)用并發(fā)編程中的設(shè)計模式應(yīng)用總結(jié)與展望01模式概念概述定義與分類模式是指在特定環(huán)境下,為解決某一類問題而提出的一種可重復(fù)使用的解決方案。在編程中,模式通常指設(shè)計模式,即針對軟件設(shè)計中經(jīng)常遇到的一些問題,總結(jié)出的一套可重用的解決方案。模式定義根據(jù)模式的應(yīng)用范圍和目的,設(shè)計模式可分為創(chuàng)建型模式、結(jié)構(gòu)型模式和行為型模式三類。創(chuàng)建型模式關(guān)注對象的創(chuàng)建過程,如單例模式、工廠模式等;結(jié)構(gòu)型模式關(guān)注對象之間的組合和關(guān)系,如適配器模式、裝飾器模式等;行為型模式關(guān)注對象之間的交互和通信,如觀察者模式、策略模式等。模式分類里氏替換原則子類必須能夠替換其父類。即在使用父類的地方,可以無差別地使用子類,而不會引起程序的錯誤或異常。開閉原則軟件實體應(yīng)當(dāng)對擴展開放,對修改關(guān)閉。即在不修改原有代碼的基礎(chǔ)上,通過擴展實現(xiàn)新的功能。依賴倒置原則高層模塊不應(yīng)該依賴于低層模塊,它們都應(yīng)該依賴于抽象。即抽象不應(yīng)該依賴于細節(jié),細節(jié)應(yīng)該依賴于抽象。迪米特法則一個對象應(yīng)當(dāng)對其他對象保持最少的了解。即一個類應(yīng)該盡量減少對其他類的依賴和了解,以降低耦合度。接口隔離原則客戶端不應(yīng)該依賴于它不需要的接口。即一個類對另一個類的依賴應(yīng)該最小化,只依賴于必要的接口。設(shè)計模式原則0102單例模式確保一個類只有一個實例,并提供一個全局訪問點。常用于管理全局狀態(tài)或資源的情況,如配置管理、日志記錄等。工廠模式提供一個創(chuàng)建對象的接口,但讓子類決定要實例化哪個類。工廠方法使一個類的實例化延遲到其子類。常用于需要根據(jù)不同條件創(chuàng)建不同對象的情況。觀察者模式定義對象間的一種一對多的依賴關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新。常用于實現(xiàn)事件驅(qū)動編程和GUI編程中的事件處理機制。策略模式定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。本模式使得算法可獨立于使用它的客戶而變化。常用于需要根據(jù)不同條件選擇不同算法的情況。適配器模式將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。常用于需要兼容舊接口或整合不同系統(tǒng)的情況。030405編程中常見模式02創(chuàng)建型模式在編程中應(yīng)用工廠方法模式是一種創(chuàng)建型設(shè)計模式,它在父類中提供一個創(chuàng)建對象實例的接口,但讓子類決定要實例化的類是哪一個。工廠方法模式將對象的創(chuàng)建與使用分離,使得系統(tǒng)更加靈活,易于擴展和維護。定義當(dāng)創(chuàng)建對象的邏輯比較復(fù)雜,或者需要根據(jù)不同的條件創(chuàng)建不同的對象時,可以使用工廠方法模式。例如,在一個圖形界面中,可能需要根據(jù)不同的用戶輸入創(chuàng)建不同的圖形對象,這時就可以使用工廠方法模式。應(yīng)用場景工廠方法模式抽象工廠模式是一種創(chuàng)建型設(shè)計模式,它提供一個接口,用于創(chuàng)建相關(guān)或依賴對象的家族,而不需要明確指定具體類。抽象工廠模式可以將簡單工廠模式和工廠方法模式進行結(jié)合,用來創(chuàng)建一系列相關(guān)或者互相依賴的對象,而無需指定它們具體的類。定義當(dāng)需要創(chuàng)建一系列相關(guān)或者互相依賴的對象,并且希望能夠在運行時動態(tài)地指定這些對象的類型時,可以使用抽象工廠模式。例如,在一個游戲開發(fā)中,可能需要創(chuàng)建不同類型的角色和裝備,這時就可以使用抽象工廠模式。應(yīng)用場景抽象工廠模式定義單例模式是一種創(chuàng)建型設(shè)計模式,它確保一個類只有一個實例,并提供一個全局訪問點。單例模式的主要目的是確保一個類只有一個實例被創(chuàng)建,這樣可以節(jié)省系統(tǒng)資源,并且對于一些需要頻繁創(chuàng)建和銷毀的對象,單例模式可以提高系統(tǒng)的性能。應(yīng)用場景當(dāng)需要確保一個類只有一個實例被創(chuàng)建,或者需要頻繁地創(chuàng)建和銷毀對象時,可以使用單例模式。例如,在一個數(shù)據(jù)庫連接池中,可以使用單例模式來確保只有一個數(shù)據(jù)庫連接實例被創(chuàng)建。單例模式VS建造者模式是一種創(chuàng)建型設(shè)計模式,它將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。建造者模式通常用于構(gòu)建一些復(fù)雜的對象,這些對象的構(gòu)建過程可能需要很多步驟,而且可能需要根據(jù)不同的需求進行不同的構(gòu)建。應(yīng)用場景當(dāng)需要構(gòu)建一些復(fù)雜的對象,并且這些對象的構(gòu)建過程可能需要很多步驟時,可以使用建造者模式。例如,在一個圖形編輯軟件中,可以使用建造者模式來構(gòu)建復(fù)雜的圖形對象。定義建造者模式定義原型模式是一種創(chuàng)建型設(shè)計模式,它使用原型實例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象。原型模式允許在運行時動態(tài)地改變對象的行為。應(yīng)用場景當(dāng)創(chuàng)建對象的成本比較大時,或者需要動態(tài)地改變對象的行為時,可以使用原型模式。例如,在一個需要頻繁創(chuàng)建相似對象的場景中(如游戲中的敵人、道具等),可以使用原型模式來提高性能并減少內(nèi)存消耗。原型模式03結(jié)構(gòu)型模式在編程中應(yīng)用何時使用:1、系統(tǒng)需要使用現(xiàn)有的類,而此類的接口不符合系統(tǒng)的需要。2、想要建立一個可以重復(fù)使用的類,用于與一些彼此之間沒有太大關(guān)聯(lián)的一些類,包括一些可能在將來引進的類一起工作,這些源類不一定有一致的接口。3、通過接口轉(zhuǎn)換,將一個類插入另一個類系中。(比如老虎和飛禽,現(xiàn)在多了一個飛虎,在不增加實體的需求下,增加一個適配器,在里面包容一個虎對象,實現(xiàn)飛的接口。)意圖:將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。Adapter模式使得原本由于接口或類的不兼容而不能一起工作的那些類可以一起工作。主要解決:在軟件系統(tǒng)中,常常要將一些"現(xiàn)存的對象"放到新的環(huán)境中,而新環(huán)境要求的接口是現(xiàn)對象不能滿足的。適配器模式將抽象部分與實現(xiàn)部分分離,使它們都可以獨立地變化。意圖主要解決何時使用在有多種可能會變化的情況下,用繼承會造成類爆炸問題,擴展起來不靈活。實現(xiàn)系統(tǒng)可能有多個角度分類,每一種角度都可能變化。030201橋接模式意圖01將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。Composite使得用戶對單個對象和復(fù)合對象的使用具有一致性。主要解決02它在我們樹型結(jié)構(gòu)的問題中,模糊了簡單元素和復(fù)雜元素的概念,客戶程序可以像處理簡單元素一樣來處理復(fù)雜元素,從而使得客戶程序與復(fù)雜元素的內(nèi)部結(jié)構(gòu)解耦。何時使用031、你想表示對象的部分-整體層次結(jié)構(gòu)(樹形結(jié)構(gòu))。2、你希望用戶忽略組合對象與單個對象的不同,用戶將統(tǒng)一地使用組合結(jié)構(gòu)中的所有對象。組合模式動態(tài)地給一個對象添加一些額外的職責(zé)。就增加功能來說,Decorator模式相比生成子類更為靈活。意圖一般的,我們?yōu)榱藬U展一個類經(jīng)常使用繼承方式實現(xiàn),由于繼承為類引入靜態(tài)特征,并且隨著擴展功能的增多,子類會很膨脹。主要解決在不想增加很多子類的情況下擴展類。何時使用裝飾器模式

外觀模式意圖為子系統(tǒng)中的一組接口提供一個一致的界面,F(xiàn)acade模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。主要解決降低訪問復(fù)雜系統(tǒng)的內(nèi)部子系統(tǒng)時的復(fù)雜性,簡化客戶端與之的接口。何時使用1、客戶端不需要知道系統(tǒng)內(nèi)部的復(fù)雜聯(lián)系,只需一個統(tǒng)一的高級接口。2、需要在幾個不同的系統(tǒng)間建立通用的接口的場景。意圖運用共享技術(shù)有效地支持大量細粒度的對象。主要解決在有大量對象時,有可能會造成內(nèi)存溢出,我們把其中共同的部分抽象出來,如果有相同的業(yè)務(wù)請求,直接返回在內(nèi)存中已有的對象,避免重新創(chuàng)建。何時使用1、系統(tǒng)中有大量對象。2、這些對象消耗大量內(nèi)存。3、這些對象的狀態(tài)大部分可以外部化。4、這些對象可以按照內(nèi)蘊狀態(tài)分為很多組,當(dāng)把外蘊對象從對象中剔除時,每一組對象都可以用一個對象來代替。5、系統(tǒng)不依賴于這些對象身份,這些對象是不可分辨的。享元模式為其他對象提供一種代理以控制對這個對象的訪問。在直接訪問對象時帶來的問題,比如說:要訪問的對象在遠程的機器上。在面向?qū)ο笙到y(tǒng)中,有些對象由于某些原因(比如對象創(chuàng)建開銷很大,或者某些操作需要安全控制,或者需要進程外的訪問),直接訪問會給使用者或者系統(tǒng)結(jié)構(gòu)帶來很多麻煩,我們可以在訪問此對象時加上一個對此對象的訪問層。想在訪問一個類時做一些控制。意圖主要解決何時使用代理模式04行為型模式在編程中應(yīng)用定義一系列算法,并將每個算法封裝起來,使它們可以相互替換。策略模式使算法可以獨立于使用它的客戶端而變化。定義當(dāng)存在多種算法,且客戶端需要根據(jù)不同情況選擇不同算法時,可以使用策略模式。應(yīng)用場景策略模式定義對象間一種一對多的依賴關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新。當(dāng)一個對象的狀態(tài)變化需要通知其他對象,且不希望明確指定接收通知的對象是誰時,可以使用觀察者模式。觀察者模式應(yīng)用場景定義定義提供一種方法順序訪問一個聚合對象中各個元素,而又不暴露該對象的內(nèi)部表示。應(yīng)用場景當(dāng)需要訪問一個聚合對象中的元素,而又不想暴露該對象的內(nèi)部表示時,可以使用迭代器模式。迭代器模式責(zé)任鏈模式定義使多個對象都有機會處理請求,從而避免請求的發(fā)送者和接收者之間的耦合關(guān)系。將這些對象連成一條鏈,并沿著這條鏈傳遞請求,直到有一個對象處理它為止。應(yīng)用場景當(dāng)存在多個處理對象,且請求的處理需要按照一定順序進行傳遞和處理時,可以使用責(zé)任鏈模式。將一個請求封裝為一個對象,從而使你使用不同的請求把客戶端與服務(wù)端操作解耦。當(dāng)需要將請求的操作封裝為對象,且希望實現(xiàn)請求的撤銷和重做功能時,可以使用命令模式。定義應(yīng)用場景命令模式定義在不破壞封裝性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。這樣以后就可將該對象恢復(fù)到原先保存的狀態(tài)。應(yīng)用場景當(dāng)需要保存和恢復(fù)一個對象的內(nèi)部狀態(tài)時,且不希望破壞該對象的封裝性時,可以使用備忘錄模式。備忘錄模式定義允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為。對象看起來似乎修改了它的類。要點一要點二應(yīng)用場景當(dāng)一個對象的行為取決于它的狀態(tài),且狀態(tài)的改變會導(dǎo)致行為的變化時,可以使用狀態(tài)模式。狀態(tài)模式定義表示一個作用于某對象結(jié)構(gòu)中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用于這些元素的新操作。應(yīng)用場景當(dāng)需要對一個對象結(jié)構(gòu)中的元素進行很多不同的并且不相關(guān)的操作,而需要避免讓這些操作"污染"這些對象的類時,可以使用訪問者模式。訪問者模式05并發(fā)編程中的設(shè)計模式應(yīng)用通過共享緩沖區(qū)解決生產(chǎn)者和消費者速度不匹配問題,實現(xiàn)生產(chǎn)者和消費者的解耦。生產(chǎn)者消費者模式平衡生產(chǎn)者和消費者的處理能力,提高系統(tǒng)整體性能;降低系統(tǒng)耦合度,提高系統(tǒng)可維護性。優(yōu)點需要考慮線程同步和互斥問題,否則可能導(dǎo)致數(shù)據(jù)混亂或丟失。缺點生產(chǎn)者-消費者模式03缺點需要考慮讀寫操作的同步問題,否則可能導(dǎo)致數(shù)據(jù)不一致或臟讀。01讀寫鎖分離模式允許多個線程同時讀取共享資源,但只允許一個線程寫入共享資源,提高并發(fā)性能。02優(yōu)點提高讀取操作的并發(fā)性能,降低寫入操作的等待時間。讀寫鎖分離模式通過創(chuàng)建和管理一組線程來避免頻繁創(chuàng)建和銷毀線程帶來的開銷,提高系統(tǒng)性能和穩(wěn)定性。線程池模式降低系統(tǒng)開銷,提高線程復(fù)用率;有效控制線程數(shù)量,避免系統(tǒng)資源耗盡。優(yōu)點需要合理設(shè)置線程池參數(shù),否則可能導(dǎo)致線程過多或過少,影響系統(tǒng)性能。缺點線程池模式06總結(jié)與展望增強代碼可維護性設(shè)計模式使代碼結(jié)構(gòu)更清晰、更易于理解,從而降低了維護成本。提高系統(tǒng)可擴展性設(shè)計模式有助于實現(xiàn)松耦合的系統(tǒng)設(shè)計,使得系統(tǒng)更容易適應(yīng)需求變化。提高代碼重用性設(shè)計模式提供了解決常見問題的最佳實踐,通過重用這些經(jīng)過驗證的解決方案,可以減少開

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論