設計模式包含了面向對象的精髓,“懂了設計模式,你就懂了面向對象分析和設計的精要”。
七大原則:
- 單一職責原則
對類來說的,即一個類應該只負責一項職責。
- 接口隔離原則
客戶端不應該依賴它不需要的接口,即一個類對另一個類的依賴應該建立在最小的接口上。
- 依賴倒置原則
高層模塊不應該依賴低層模塊,二者都應該依賴其抽象。
低層模塊儘量都要有抽象類或接口,或者兩者都有,程序穩定性更好。
抽象不應該依賴細節,細節應該依賴抽象。
依賴倒置的中心思想是面向接口編程。
繼承時遵循里氏替換原則。
依賴關係傳遞的三種方式:
- 接口傳遞
- 構造方法傳遞
- setter 方法傳遞
- 里氏替換原則
使用繼承會給程序帶來侵入性,程序的可移植性降低,增加對象之間的耦合性。
在使用繼承時,子類中儘量不要重寫父類的方法。
通用做法:原來的父類和子類都繼承一個更通俗的基類,原有的繼承關係去掉,採用依賴、聚合、組合等關係代替。
- 開閉原則
一個軟件實體如類,模塊和函數應該對擴展開放(對提供方),對修改關閉(對使用方)。用抽象構建框架,用實現擴展細節。
開閉原則
- 迪米特法則(最少知道原則)
一個對象應該對其他對象保持最少的瞭解。
只與直接的朋友通信。
直接的朋友:出現在成員變量、方法參數、方法返回值中的類爲直接的朋友,而出現在局部變量中的類不是直接的朋友。也就是說,陌生的類最好不要以局部變量的形式出現在內部。
- 合成複用原則
儘量使用合成、聚合的方式,而不是使用繼承。
設計原則核心思想
- 找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的代碼混在一起。
- 針對接口編程,而不是針對實現編程。
- 爲了交互對象之間的松耦合設計而努力。
設計模式分爲三種類型:
- 創建型模式:單例模式、工廠模式、抽象工廠模式、原型模式、建造者模式
- 結構性模式:適配器模式、橋接模式、裝飾者模式、組合模式、外觀模式、享元模式、代理模式
- 行爲型模式:模板方法模式、命令模式、訪問者模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、解釋器模式、狀態模式、策略模式、責任鏈模式