2025-02-17

隨著面向對象的發展,面向對象已經逐漸的取代瞭原有的面向過程的編程方法,它使得以前存在的軟件不容易維護、靈活性差、不容易擴展等大量問題能夠得到解決,而設計模式是我們程序員在多年的工作經驗中的總結,它使得程序程序更加靈活、容易修改、易於復用,是解決軟件存在大量問題的一種方法。

 


         在下面的五到六篇博客中我對23中設計模式的內容和原則等進行一下小小的總結和歸納。本篇博客是對設計模式的原則的總結。

 


         設計模式分為下面幾個原則:單一職責、開放—封閉、依賴倒轉、裡氏代換、合成聚合復用、迪米特法則、接口隔離。下面對這些原則一一的解釋一下:

 


         單一職責:就一個類而言,應該僅有一個引起它變化的原因。如果一個類承擔的職責太多,就等於將這些職責耦合在瞭一起,一個職責的變化可能會抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生的時候,設計會遭到意想不到的破壞。

 


         開放—封閉:就是說軟件實體(類、模塊、函數等等)應該可以擴展,但是不可修改。對於擴展是開發的,對於修改是封閉的。模塊總會存在一些無法對之封閉的變化,不可能完全封閉,設計人員應該預先猜測出最可能發生變化的種類,然後構造抽象來隔離變化,變化發生的時候立即采取行動。面對需求,對程序的改動是通過增加新代碼,而不是更改現有的代碼。

 


         依賴倒轉:A. 高層模塊不應該依賴低沉模塊,兩個都應該依賴抽象。B.抽象不應該依賴細節,細節應該依賴抽象。也就是依賴抽象不依賴具體。這個原則可以說是面向對象的標志,依賴具體的實現都是面向過程的。

 


         裡氏代換:子類型必須能夠替換掉他們的父類型。隻有當子類可以替換掉父類,軟件單位的功能不受到影響時,父類才能真正被復用,而子類也能夠在父類的基礎之上增加新的功能。正是由於子類型的可替換性才使得父類的模塊在無需修改的情況下就可以擴展。

 


         組合聚合復用:組合是體現“部分整體”關系的結構(樹——樹枝,樹葉),由於組合可以形成層次結構,不斷的遞歸下去可以形成龐大俄一個組織,組合關系可以使用戶一致的使用組合結構和單個對象。聚合即“has—a”關系(大學——二級學院)。

 


         迪米特法則:如果兩個類不必彼此直接通信,那麼這兩個類就不應該發生直接的相互作用。如果一個類需要調用另一個類的某一個方法的話,可以通過第三種轉發這個調用。在類的結構設計上,每一個類都應當降低成員的訪問權限,根本思想是強調類之間的松耦合。這種法則也叫最少知識原則,就是說一個對象應該對其他對象有盡可能少得瞭解,不合陌生人說話。

 


         接口隔離:這個法則和迪米特法則是相通的,迪米特法則是目的,而接口隔離是規范,為瞭減少耦合性,需要用接口來約束類,達到迪米特法則的要求

作者“許德鵬的專欄”
 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *