我學設計模式 之 物件導向設計原則

sz_bdqn發表於2010-09-22

我學設計模式 物件導向設計原則

       物件導向常用的設計原則有:

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替換原則體現的是物件繼承的規範;至於依賴倒轉原則,則是多型和抽象思想的體現。在充分理解物件導向思想的基礎上,掌握基本的設計原則,並能夠在專案設計中靈活運用這些原則,就能夠改善我們的設計,尤其能夠保證可重用性、可維護性與可擴充套件性等系統的質量屬性。這些核心要素與設計原則,就是我們設計的物件法則,他們是理解和掌握設計模式的必備知識。

      

      

此類文章,只是代表個人目前學習所記錄的筆記、心得。希望記錄下來對自己以後也用,也希望看到的您能指點指點。

 

 

 

 

 

 

相關文章