我學設計模式 之 物件導向設計原則
我學設計模式 之 物件導向設計原則
物件導向常用的設計原則有:
1. 單一職責原則
2. 開放封閉原則
3. Liskov替換原則
4. 依賴倒置原則
5. 介面隔離原則
單一職責原則:“就一個類而言,應該只專注於做一件事和僅有一個引起變化的原因。” 這就是所謂的單一職責原則。
開放封閉原則:要求軟體實體(類、模組以及功能等)對擴充套件開放,對修改封閉。
對外開放的關鍵是“抽象”,而物件的多型則保證了這種擴充套件的開發性。開放原則首先意味著衛門可以自由的增加功能,而不會影響系統的功能。其次開放原則還意味著實現是可以替換的。
Liskov替換原則:如果對於每一個型別為T1的物件o1,都有型別為T2的物件o2,使得以T1定義的所有程式P在所有的物件o1都替換成o2,程式P的行為沒有變化,那麼型別T2是型別T1的子類。
里氏替換原則是繼承複用的基石。只有當衍生類可以替換掉父類,軟體單位的功能不會受到影響時,基類才能正在被複用,而衍生類才可以在基類的基礎上增加新的功能。
里氏替換原則在設計模式中的體現:
1. 策略模式
2. 合成模式
3. 代理模式
依賴倒轉原則:要求客戶端依賴於抽象耦合。即抽象不應該依賴於細節,細節應當依賴於抽象。依賴倒轉的另一種表達方式:要針對介面程式設計,不要針對實現程式設計。
依賴倒置原則是OO設計的核心,列舉在設計模式中的體現:
1. 工廠方法
2. 模板方法模式
3. 迭代模式
介面隔離原則:(Internet Segregation Principle,常常縮寫ISP)講的是:使用多個專門介面比使用單一介面要好。
換言之,從一個客戶類的角度來講:一個對另外一個類的依賴性應當是建立在最小的介面上的。
過於臃腫的介面是對介面的汙染。
介面隔離原則在設計模式中的體現:
1. 介面卡模式
合成/聚合複用原則(CARP):經常又叫做複用原則。就是在一個新的物件裡面使用一些已有的物件,使之成為新物件的一部分;新的物件通過向這些物件的委派達到複用已有功能的目的。這個設計的另一個表述:要儘量使用複合/聚合,儘量不要使用整合。
迪米特法則(LOD):又叫最少只是原則。就是說一個物件應當對其他物件有儘可能少的瞭解。
迪米特法則與設計模式:
1. 門面模式
2. 調停模式
總結:
物件導向設計原則依然是物件導向思想的體現。例如:單一職責原則與介面隔離原則體現了封裝的思想;開放封閉原則體現了物件的封裝和多型;而Liskov替換原則體現的是物件繼承的規範;至於依賴倒轉原則,則是多型和抽象思想的體現。在充分理解物件導向思想的基礎上,掌握基本的設計原則,並能夠在專案設計中靈活運用這些原則,就能夠改善我們的設計,尤其能夠保證可重用性、可維護性與可擴充套件性等系統的質量屬性。這些核心要素與設計原則,就是我們設計的物件法則,他們是理解和掌握設計模式的必備知識。
此類文章,只是代表個人目前學習所記錄的筆記、心得。希望記錄下來對自己以後也用,也希望看到的您能指點指點。
相關文章
- 物件導向設計原則和模式物件模式
- 物件導向設計原則&設計模式分類物件設計模式
- 前端設計模式(0)物件導向&&設計原則前端設計模式物件
- 物件導向設計原則物件
- 物件導向設計原則之開閉原則物件
- 物件導向設計原則之合成複用原則物件
- 物件導向設計原則之介面隔離原則物件
- 物件導向設計原則之里氏代換原則物件
- 物件導向設計原則,以及包的設計原則物件
- 物件導向的設計原則物件
- 物件導向設計原則概述物件
- 物件導向設計(OOD)原則物件
- 物件導向之旅-設計與設計原則物件
- 物件導向之六大設計原則物件
- 物件導向設計原則之單一職責原則物件
- 物件導向設計原則之迪米特法則物件
- The Principles of OOD 物件導向設計原則物件
- 物件導向的基本設計原則物件
- 2.物件導向設計原則物件
- 開閉原則——物件導向程式設計原則物件程式設計
- 設計模式(一)——物件導向六大原則設計模式物件
- JavaScript設計模式之物件導向程式設計JavaScript設計模式物件程式設計
- 【設計原則】物件導向程式設計的六大原則物件程式設計
- Java中物件導向的設計原則Java物件
- 物件導向設計6大原則物件
- 物件導向的編碼設計原則物件
- 設計模式之——物件導向5大基本原則設計模式物件
- [.net 物件導向程式設計深入](18)實戰設計模式——設計模式使用場景及原則物件程式設計設計模式
- 翻譯 | The Principles of OOD 物件導向設計原則物件
- 物件導向設計的6大原則物件
- 設計模式:物件導向設計的六大原則 (絕對詳細)設計模式物件
- 物件導向的7大原則與23種設計模式物件設計模式
- JS物件導向設計模式JS物件設計模式
- 61條物件導向設計的經驗原則物件
- 七種常見的物件導向設計原則物件
- Javascript 設計模式之設計原則JavaScript設計模式
- 【設計模式筆記】(零)- 物件導向的六大原則設計模式筆記物件
- JavaScript-設計模式-物件導向程式設計JavaScript設計模式物件程式設計