設(shè)計模式:
? ? ? ? 1.策略模式:定義了算法族,分別封裝起來椅寺,讓他們之間可以互相替換施籍,此模式讓算法的變化獨立于使用算法的客戶。
? ? ? ? 2.觀察者模式:定義了對象之間的一對多以來不铆,這樣以來蝌焚,當(dāng)一個對象改變狀態(tài)時,它的所有以來者都會收到通知并自動更新誓斥。觀察者模式定義了一系列對象之間的一對多關(guān)系只洒。當(dāng)一個對象改變狀態(tài),其他以來者就會收到通知劳坑。
? ? ? ? 3.裝飾者模式:動態(tài)地將責(zé)任附加到對象上毕谴。想要擴展功能,裝飾者提供有別于繼承的另一種選擇泡垃。
? ? ? ? ? ? ?裝飾者模式意味著一群裝飾者類析珊,這些類用來包裝具體組件。
? ? ? ? ? ? ?裝飾者類反映出被裝飾的組件類型(事實上蔑穴,他們具有相同的類型忠寻,都經(jīng)過接口或繼承實現(xiàn))。
? ? ? ? ? ? ?裝飾者可以在被裝飾者的行為前面與/或后面加上自己的行為存和,甚至將被裝飾者的行為整個取代掉奕剃,而達到特定的目的。
? ? ? ? ? ?裝飾者會導(dǎo)致設(shè)計中出現(xiàn)許多小對象捐腿,如果過度使用纵朋,會讓程序編的很復(fù)雜。
? ? ? ? ?4.工廠方法模式:通過讓子類決定該創(chuàng)建的對象是什么茄袖,來達到將對象創(chuàng)建的過程封裝的目的操软。,工廠方法用來處理對象的創(chuàng)建宪祥,并將這樣的行為封裝在子類中聂薪,這樣客戶程序中關(guān)于超類的代碼就和子類對象創(chuàng)建代碼解耦了。
? ? ? ? ?5.抽象工廠模式:提供一個接口蝗羊,用于創(chuàng)建相關(guān)或依賴對象的家族藏澳,而不需要明確指定具體類。抽象工廠允許客戶使用抽象的接口創(chuàng)建一組相關(guān)的產(chǎn)品耀找,而不需要知道(或關(guān)心)實際產(chǎn)出的具體產(chǎn)品是什么翔悠,這樣一來,客戶就從具體的產(chǎn)品中解耦野芒。
? ? ? ?6.單例模式:確保一個類只有一個實例蓄愁,并提供一個全局訪問點。
? ? ? ? ?7.命令模式:將“請求”封裝成對象狞悲,一遍使用不同的請求涝登,隊列或者日志來參數(shù)化其他對象。命令模式也支持可撤銷的操作效诅。
? ? ? ? ? ? ? ? ? ?命令模式的更多用途:隊列請求胀滚。日志請求。
? ? ? ? ? 8.適配器模式:將一個類的接口乱投,轉(zhuǎn)換成客戶期望的的另一個接口咽笼。適配器讓原本接口不兼容的類可以合作無間適配器實現(xiàn)了目標(biāo)接口,并持有被適配者的實例戚炫。
? ? ? ? ? ? 9.外觀模式:提供了一個統(tǒng)一的接口剑刑,用來訪問子系統(tǒng)中的一群接口。外觀定義了一個高層接口双肤,讓子系統(tǒng)梗容易使用施掏。
? ? ? ? ? ? 10.模板方法模式:在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中茅糜。模板方法使得子類可以在不改變算法結(jié)構(gòu)的情況下七芭,重新定義算法中的某些步驟。
? ? ? ? ? ? 11.迭代器模式:提供一種方法順序訪問一個聚合對象中種的各個元素蔑赘,而又不暴露內(nèi)部的表示狸驳。
? ? ? ? ? ? 12.狀態(tài)模式:允許對象在內(nèi)部狀態(tài)改變時改變它的行為,對象看起來好像修改了它的類缩赛。