由於戰略上的失誤,導致了設計模式看了一個月才看完,雖然有些地方還是不太理解,但起碼也比初出茅廬多了許多認識。
縱觀《大話設計模式》,這本書介紹了23種設計模式,當然也有一些原則的指導,從全域來看可以分為行為型模式,建立型模式,結構型模式以及原則
具體展開的各個模式分屬為:
原則:
單一職責:就一個類而言,應該僅有一個引起它變化的原因;
開放-封閉:是說軟體實體(類、模組、函數等等)應該可以擴充,但是不可修改;
依賴倒轉:A.高層模組不應該依賴底層模組,兩個都應該依賴抽象;
B.抽象不應該依賴細節,細節應該依賴抽象;
裡氏代換:子類型必須能夠替換掉它們的父類型;
迪米特:如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果其中一個類需要調用另一個類的某一個方法的話,可以通過第三者轉寄這個調用。
建立型模式:
1.抽象原廠模式:提供一個建立一系列相關或相互依賴對象介面,而無需指定它們具體的類;
2.建造者模式:將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示的意圖時,需要應用"建造者模式",又叫產生器模式;
3.Factory 方法模式:定義一個用於建立對象的介面,讓子類決定執行個體化哪一個類,原廠模式使一個類的執行個體化延遲到其子類;
4.原型模式:用原型執行個體指定建立對象的種類,並且通過拷貝這些原型建立新的對象;
5.單例模式:保證一個類僅有一個執行個體,並提供一個訪問它的全域訪問點;
結構型模式:
6.適配器模式:將一個類的介面轉換成客戶希望的另外一個介面。適配器模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作;
7.橋接模式:將抽象部分與它的實現部分分離,使它們都可以獨立地變化;
8.組合模式:將對象組合成樹形結構以表示“部分-整體”的階層,組合模式使得使用者對單個對象和組合對象的使用具有一致性;
9.裝飾模式:動態地給一個對象添加一些額外的職責,就增加功能而言,裝飾模式相比產生子類更加靈活;
10.面板模式:為子系統中的一組介面提供一個一致的介面,此模式定義了一個高層介面,這個介面使得這一子系統更加容易使用
11.享元模式:運用共用技術有效地支援大量細粒度的對象;
12.代理模式:為其他對象提供一種代理以控制這個對象的訪問;
行為型模式:
13.觀察者模式:定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象.這個主題對象在狀態發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己;
14.模板方法模式:定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟;
15.命令模式:將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化;可用對請求排隊或記錄請求日誌,以及支援可撤銷的操作;
16.狀態模式:當一個對象的內在狀態改變時允許改變其行為,這個對象看起來像是改變了其類;
17.職責鏈模式:使多個對象都有機會處理請求,從而避免請求的寄件者和接受者之間的耦合關係。將這個對象連成一條鏈,並沿著這條鏈傳遞該請求請求,直到有一個對象處理它為止;
18.解譯器模式:給定一個語言,定義它的文法的一種表示,並定義一個解譯器,這個解譯器使用該表示來解釋語言中的句子;
19.中介者模式:用一個中介對象來封裝一系列的對象互動。中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動;
20.訪問者模式:表示一個作用於某對象結構中的各元素的操作。它使你可以在不改變各元素的前提下定義作用於這些元素的新操作;
21.策略模式:定義一系列演算法,把它們一個個封裝起來,並且使它們可相互替換。本模式使得演算法可獨立於使用它的客戶而變化;
22.備忘錄模式:在不被破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外儲存這個狀態。這樣以後就可將對象恢複到原先儲存的狀態;
23.迭代器模式:提供一種方法順序訪問一個彙總對象中各個元素,而又不暴露該對象的內部表示。
以上即是設計模式的介紹,當然具體情況也要具體分析,在不同的情況選擇不同的模式才能更好地運用模式解決問題...