代码改变世界

面向对象设计应该遵守的一些原则

2010-06-02 21:05  AlexLee85  阅读(166)  评论(0编辑  收藏  举报

1."開-閉"原則-Open-Closed Principle(OCP)

"開-閉"原則講的是:一個軟件實體應當對擴展開放,對修改關閉。這一原則由Bertrand Meyer[MEYER88]提出,英文原文是: Software entities should be open for extension, but closed for modification. 這個原則說的是,在設計一個模塊的時候,應當使這個模塊可以在不被修改的前提下被擴展。換而言之,應當可以在不必修改源代碼的情況下改變這個模塊的行為。

 

2.里氏代換原則-Liskov Substitution Principle(LSP)

理氏代換原則的嚴格表達式:如果對每一個類型為T1的對象o1,都有類型為T2的對象o2,使得以T1定義的所有程序P在所有的對象o1都代換成o2時,程序P的行為沒有變化,那么類型T2是類型 T1的子類型。換而言之,一個軟件實體如果使用的是一個基類的話,那么一定適用于其子類,而且它根本不能察覺出基類對象和子類對象的區別。里氏代換原則是繼承復用的基石。只有當衍生類可以替換掉基類,軟件單位的功能不會受到影響時,基類才能真正被復用,而衍生類也才能夠在基類的基礎上增加新的行為。

 

3.依賴倒轉原則-Dependency Inversion Principle(DIP)

傳統的過程性系統的設計辦法傾向于使高層次的模塊依賴于低層次的模快; 抽象層次依賴于具體層次。倒轉原則就是要把這個錯誤的依賴關系倒轉過來,這就是"依賴倒轉原則"的來由。

 

4.接口隔離原則-Interface Segregation Principle(ISP)

接口隔離原則講的是:使用多個專門的接口比使用單一的總接口要好。換而言之,從一個客戶類的角度來講:一個類對另外一個類的依賴性應當是建立在最小的接口上的。

 

5.合成/聚合復用原則-Composite/Aggregate Reuse Principle(CARP)

合成/聚合復用原則經常又叫做合成復用原則(Composite Reuse Principle)。合成/聚合復用原則就是在一個新的對象里面使用一些已有的對象,使之成為新的對象的一部分;新的對象通過向這些對象委派達到復用已有功能的目的。這個設計原則有另一個更簡短的表述:要盡量使用合成/聚合,盡量不要使用繼承。

 

6.迪米特法則-Law of Demeter(LoD)

迪米特法則又叫做最少知識原則(Least Knowledge Principle或簡寫為:LKP),就是說,一個對象應當對其他對象有盡可能少的了解。迪米特法則最初是用來作為面向對象的系統設計風格的一種法則,于1987年秋天由Ian Holland在美國東北大學(Northeastern University)為一個叫做迪米特(Demeter)的項目設計提出的,因此叫做迪米特的項目[LIEB89][LIEB86]。這條法則實際上是很多著名系統,比如火星登陸軟件系統、木星的歐羅巴衛星軌道飛船的軟件系統的指導設計原則。