概念:
設(shè)計模式:對用來在特定場景下解決一般設(shè)計問題的類和互相通信的對象的描述
四要素:
- 模式名 :一個助記名令花,它用一兩個詞來描述模式的問題依啰、解決方案和效果
- 問題 :描述了應(yīng)該在何時使用模式
- 解決方案 :描述了設(shè)計的組成成分扼脐、他們之間的相互關(guān)系及各自的相互關(guān)系及各自的職責(zé)和協(xié)作方式
- 效果 :描述了模式應(yīng)用的效果及使用模式應(yīng)該權(quán)衡的問題
設(shè)計模式+意圖:
常用的設(shè)計模式
- Abstract Factory:提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口竿痰,而無需指定它們具體的類苟弛。
- Adapter :將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口褪测。 Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作猴誊。
- Bridge:將抽象部分與它的實現(xiàn)部分分離潦刃,使它們都可以獨立地變化。
- Builder:將一個復(fù)雜對象的構(gòu)建與它的表示分離稠肘,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示福铅。
- Chain of Responsibility:為解除請求的發(fā)送者和接收者之間耦合,而使多個對象都有機會處理這個請求项阴。將這些對象連成一條鏈滑黔,并沿著這條鏈傳遞該請求,直到有一個對象處理它环揽。
- Command:將一個請求封裝為一個對象略荡,從而使你可用不同的請求對客戶進(jìn)行參數(shù)化;對請求排隊或記錄請求日志歉胶,以及支持可取消的操作汛兜。
- Composite:將對象組合成樹形結(jié)構(gòu)以表示“部分 -整體”的層次結(jié)構(gòu)。Composite使得客戶對單個對象和復(fù)合對象的使用具有一致性通今。
- Decorator:動態(tài)地給一個對象添加一些額外的職責(zé)粥谬。就擴展功能而言, Decorator模式比生成子類方式更為靈活辫塌。
- Facade:為子系統(tǒng)中的一組接口提供一個一致的界面漏策, Facade模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用臼氨。
- Factory Method:定義一個用于創(chuàng)建對象的接口掺喻,讓子類決定將哪一個類實例化。Factory Method使一個類的實例化延遲到其子類储矩。
- Flyweight:運用共享技術(shù)有效地支持大量細(xì)粒度的對象感耙。
- Interpreter:給定一個語言 , 定義它的文法的一種表示,并定義一個解釋器 , 該解釋器使用該表示來解釋語言中的句子持隧。
- Iterator:提供一種方法順序訪問一個聚合對象中各個元素 , 而又不需暴露該對象的內(nèi)部表示即硼。
- Mediator:用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用屡拨,從而使其耦合松散谦絮,而且可以獨立地改變它們之間的交互。
- Memento:在不破壞封裝性的前提下洁仗,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)性锭。這樣以后就可將該對象恢復(fù)到保存的狀態(tài)赠潦。
- Observer:定義對象間的一種一對多的依賴關(guān)系 ,以便當(dāng)一個對象的狀態(tài)發(fā)生改變時 ,所有依賴于它的對象都得到通知并自動刷新。
- Prototype:用原型實例指定創(chuàng)建對象的種類草冈,并且通過拷貝這個原型來創(chuàng)建新的對象她奥。
- Proxy:為其他對象提供一個代理以控制對這個對象的訪問瓮增。
- Singleton:保證一個類僅有一個實例,并提供一個訪問它的全局訪問點哩俭。
- State:允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為绷跑。對象看起來似乎修改了它所屬的類。
- Strategy :定義一系列的算法,把它們一個個封裝起來, 并且使它們可相互替換凡资。本模式使得算法的變化可獨立于使用它的客戶砸捏。
- Template Method:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中隙赁。Template Method使得子類可以不改變一個算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟垦藏。
- Visitor:表示一個作用于某對象結(jié)構(gòu)中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用于這些元素的新操作伞访。