1. 程式人生 > >設計模式六大原則

設計模式六大原則

編程 color 什麽 例子 進行 函數 細節 增加 客戶

1、開閉原則:Open Close Principle

是軟件實體(類,模塊,函數等)應該可以擴展,但是不可修改。

理解:只以基於原本的來擴展功能,但不能修改原本的代碼。已經面對需求時,對程序的改動是通過增加新代碼進行的,而不是更改現有代碼。

2、依賴倒置原則:Dependence Inversion Principle(依賴接口編程)

A.高層模塊不應該依賴低層模塊,兩個都應該依賴抽象。 B.抽象不應該依賴細節。細節應該依賴抽象。

理解:都針對定義的接口或抽象類來設計一個類,而不要依賴低層類來設計高層類。沒理解,怎麽實現,難道要拋棄低層模塊?低層模塊有有什麽用? 高層類依賴接口,低層類實現具體接口,再傳給高層類使用。如更換低層類A,B的例子。

3、單一職責原則:Single Responsibility Principle

就一個類而言,應該僅有一個引起它變化的原因。

理解:寫一個類,不要在其中設計太多的功能,當需要修改任一個功能時,就都需要修改這個類,這樣比較麻煩。

4、裏氏代換原則:Liskov Substitution Principle(LSP)(子類能替換父類)

子類型必須能夠替換掉它們的父類型。

子類不能窄化接口 (裏氏代換原則)
父類public 子類不能變protected private

理解:這是在講繼承嗎?比如企鵝不能繼承於鳥類。 盡量不要重寫父類方法。如加減法擴展功能時出錯的例子。

5、迪米特原則

(最少知道原則):Demeter Principle(局部變量不調用)

如果兩個類不必彼此直接通信,那麽這兩個類就不應當發生直接的相互作用,如果其中一個類需要調用另一個類的某一個方法的話,可以通過第三者轉發這個調用。

理解:低耦合的優點不言而喻,但是怎麽樣編程才能做到低耦合呢?那正是迪米特法則要去完成的。迪米特法則又叫最少知道原則,最早是在1987年由美國Northeastern University的Ian Holland提出。通俗的來講,就是一個類對自己依賴的類知道的越少越好。也就是說,對於被依賴的類來說,無論邏輯多麽復雜,都盡量地的將邏輯封裝在類的內部,對外除了提供的public方法,不對外泄漏任何信息。迪米特法則還有一個更簡單的定義:只與直接的朋友通信。首先來解釋一下什麽是直接的朋友:每個對象都會與其他對象有耦合關系,只要兩個對象之間有耦合關系,我們就說這兩個對象之間是朋友關系。耦合的方式很多,依賴、關聯、組合、聚合等。其中,我們稱出現成員變量、方法參數、方法返回值中的類為直接的朋友,而出現在局部變量中的類則不是直接的朋友。也就是說,陌生的類最好不要作為局部變量的形式出現在類的內部。

6、接口隔離原則:Interface Segregation Principle(合理接口)

客戶端不應該依賴它不需要的接口;一個類對另一個類的依賴應該建立在最小的接口上。

理解:不要在接口中設計一個類用不到的方法,盡量使接口細化,合理。接口也不能太細化,不然會增加接口的數量,使結構復雜。

設計模式六大原則