一憨颠、設(shè)計(jì)模式基本介紹(是什么、作用积锅、優(yōu)點(diǎn))
1爽彤、軟件設(shè)計(jì)模式是什么?
軟件設(shè)計(jì)模式(Software Design Pattern)缚陷,又稱設(shè)計(jì)模式适篙。
2、設(shè)計(jì)模式的作用
★ 提高代碼的可復(fù)用性箫爷、可維護(hù)性嚷节、穩(wěn)健性聂儒、安全性和可讀性。
3硫痰、學(xué)習(xí)設(shè)計(jì)模式的意義
★ 設(shè)計(jì)模式的本質(zhì)是面向?qū)ο笤O(shè)計(jì)原則的實(shí)際運(yùn)用
衩婚,是對(duì)類的封裝性、繼承性和多態(tài)性
以及類的關(guān)聯(lián)關(guān)系和組合關(guān)系
的充分理解碍论。
4谅猾、軟件設(shè)計(jì)模式的最關(guān)鍵的4個(gè)基本要素:
模式名稱、問(wèn)題(描述了該模式的應(yīng)用環(huán)境鳍悠,即何時(shí)使用該模式税娜。)、解決方案藏研、效果敬矩。
5、使用設(shè)計(jì)模式優(yōu)點(diǎn):
(1)可以提高程序員的思維能力蠢挡、編程能力和設(shè)計(jì)能力弧岳。
(2)使程序設(shè)計(jì)更加標(biāo)準(zhǔn)化、代碼編制更加工程化业踏,使軟件開(kāi)發(fā)效率大大提高禽炬,從而縮短軟件的開(kāi)發(fā)周期。
(3)使設(shè)計(jì)的代碼可重用性高勤家、可讀性強(qiáng)腹尖、可靠性高、靈活性好伐脖、可維護(hù)性強(qiáng)热幔。
二、模式的分類和介紹
1讼庇、模式的分類:根據(jù)目的來(lái)绎巨,創(chuàng)建型模式、結(jié)構(gòu)型模式蠕啄、行為型模式
■ 創(chuàng)建型模式(5種场勤,單例、原型歼跟、工廠方法和媳、抽象工廠、建造者)嘹承;
■ 結(jié)構(gòu)型模式(7種窗价,代理、適配器叹卷、橋接撼港、裝飾坪它、外觀、享元帝牡、組合)往毡;
■ 行為型模式(11種,模板方法靶溜、策略开瞭、命令、職責(zé)鏈罩息、狀態(tài)嗤详、觀察者、中介者瓷炮、迭代器葱色、訪問(wèn)者、備忘錄娘香、解釋器)
2苍狰、模式的介紹
■ 創(chuàng)建型模式:描述了“怎樣創(chuàng)建對(duì)象”
,主要特點(diǎn)是“將對(duì)象的創(chuàng)建與使用分離”
烘绽。
(1) 單例
(Singleton)模式:某個(gè)類只能生成一個(gè)實(shí)例淋昭,該類提供了一個(gè)全局訪問(wèn)點(diǎn)供外部獲取該實(shí)例,其拓展是有限多例模式安接。
(2) 原型
(Prototype)模式:將一個(gè)對(duì)象作為原型翔忽,通過(guò)對(duì)其進(jìn)行復(fù)制而克隆出多個(gè)和原型類似的新實(shí)例。
(3)工廠方法
(Factory Method)模式:定義一個(gè)用于創(chuàng)建產(chǎn)品的接口赫段,由子類決定生產(chǎn)什么產(chǎn)品呀打。
(4)抽象工廠
(Abstract Factory)模式:提供一個(gè)創(chuàng)建產(chǎn)品族的接口矢赁,其每個(gè)子類可以生產(chǎn)一系列相關(guān)的產(chǎn)品糯笙。
(5)建造者
(Builder)模式:將一個(gè)復(fù)雜對(duì)象分解成多個(gè)相對(duì)簡(jiǎn)單的部分,然后根據(jù)不同需要分別創(chuàng)建它們撩银,最后構(gòu)建成該復(fù)雜對(duì)象给涕。
■ 結(jié)構(gòu)型模式:描述了如何將類或?qū)ο蟀茨撤N布局組成
更大的結(jié)構(gòu)。
(1)代理
(Proxy)模式:為某對(duì)象提供一種代理以控制對(duì)該對(duì)象的訪問(wèn)额获。即客戶端通過(guò)代理間接地訪問(wèn)該對(duì)象(真實(shí)對(duì)象)够庙,從而限制、增強(qiáng)或修改該對(duì)象的一些特性抄邀。
(2)適配器
(Adapter)模式:將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口耘眨,使得原本由于接口不兼容而不能一起工作的那些類能一起工作。
(3)橋接
(Bridge)模式:將抽象與實(shí)現(xiàn)分離境肾,使它們可以獨(dú)立變化剔难。它是用組合關(guān)系代替繼承關(guān)系來(lái)實(shí)現(xiàn)胆屿,從而降低了抽象和實(shí)現(xiàn)這兩個(gè)可變維度的耦合度。
(4)裝飾
(Decorator)模式:動(dòng)態(tài)的給對(duì)象增加一些職責(zé)偶宫,即增加其額外的功能非迹。
(5)外觀
(Facade)模式:為多個(gè)復(fù)雜的子系統(tǒng)提供一個(gè)一致的接口,使這些子系統(tǒng)更加容易被訪問(wèn)纯趋。
(6)享元
(Flyweight)模式:運(yùn)用共享技術(shù)來(lái)有效地支持大量細(xì)粒度對(duì)象的復(fù)用憎兽。
(7)組合
(Composite)模式:將對(duì)象組合成樹(shù)狀層次結(jié)構(gòu),使用戶對(duì)單個(gè)對(duì)象和組合對(duì)象具有一致的訪問(wèn)性吵冒。
■ 行為型模式:用于描述類或?qū)ο笾g怎樣相互協(xié)作
共同完成單個(gè)對(duì)象都無(wú)法單獨(dú)完成的任務(wù)纯命,以及怎樣分配職責(zé)
。
(1)模板方法
(Template Method)模式:定義一個(gè)操作中的算法骨架痹栖,而將算法的一些步驟延遲到子類中扎附,使得子類可以不改變?cè)撍惴ńY(jié)構(gòu)的情況下重定義該算法的某些特定步驟。
(2)策略
(Strategy)模式:定義了一系列算法结耀,并將每個(gè)算法封裝起來(lái)留夜,使它們可以相互替換,且算法的改變不會(huì)影響使用算法的客戶图甜。
(3)命令
(Command)模式:將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象碍粥,使發(fā)出請(qǐng)求的責(zé)任和執(zhí)行請(qǐng)求的責(zé)任分割開(kāi)。
(4)職責(zé)鏈
(Chain of Responsibility)模式:把請(qǐng)求從鏈中的一個(gè)對(duì)象傳到下一個(gè)對(duì)象黑毅,直到請(qǐng)求被響應(yīng)為止嚼摩。通過(guò)這種方式去除對(duì)象之間的耦合。
(5)狀態(tài)
(State)模式:允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)發(fā)生改變時(shí)改變其行為能力矿瘦。
(6)觀察者
(Observer)模式:多個(gè)對(duì)象間存在一對(duì)多關(guān)系枕面,當(dāng)一個(gè)對(duì)象發(fā)生改變時(shí),把這種改變通知給其他多個(gè)對(duì)象缚去,從而影響其他對(duì)象的行為潮秘。
(7)中介者
(Mediator)模式:定義一個(gè)中介對(duì)象來(lái)簡(jiǎn)化原有對(duì)象之間的交互關(guān)系,降低系統(tǒng)中對(duì)象間的耦合度易结,使原有對(duì)象之間不必相互了解枕荞。
(8)迭代器
(Iterator)模式:提供一種方法來(lái)順序訪問(wèn)聚合對(duì)象中的一系列數(shù)據(jù),而不暴露聚合對(duì)象的內(nèi)部表示搞动。
(9)訪問(wèn)者
(Visitor)模式:在不改變集合元素的前提下躏精,為一個(gè)集合中的每個(gè)元素提供多種訪問(wèn)方式,即每個(gè)元素有多個(gè)訪問(wèn)者對(duì)象訪問(wèn)鹦肿。
(10)備忘錄
(Memento)模式:在不破壞封裝性的前提下矗烛,獲取并保存一個(gè)對(duì)象的內(nèi)部狀態(tài),以便以后恢復(fù)它箩溃。
(11)解釋器
(Interpreter)模式:提供如何定義語(yǔ)言的文法瞭吃,以及對(duì)語(yǔ)言句子的解釋方法碌识,即解釋器。
? 參考文獻(xiàn):《軟件設(shè)計(jì)模式(java版)---程細(xì)柱》
寫(xiě)在后面的話
?????? 如果你覺(jué)得一樂(lè)的文章給您帶來(lái)了一些收獲虱而,可以給個(gè)三連?? 筏餐,一樂(lè)會(huì)一如既往地更新有價(jià)值的博客。如果文章存在錯(cuò)誤牡拇,也歡迎大家指出魁瞪。還有,如果大家有什么好的學(xué)習(xí)技巧惠呼、學(xué)習(xí)感悟导俘,也非常歡迎大家在評(píng)論區(qū)一起交流~
最后感謝大家的支持,謝謝~