設計模式之單一職責原則&開放-封閉原則

單一職責原則

 

1. 單一職責定義:

就一個類而言,應該僅有一個引起它變化的原因。通俗的說,即一個類只負責一項職責。

問題描述:

T負責兩個不同的職責:職責P1,職責P2。當由於職責P1需求發生改變而需要修改類T時,有可能會導致原本運行正常的職責P2功能發生故障。

如果一個類承擔職責過多,就等於把這些職責耦合在一起,一個職責的變化可能會削弱或者抑制這個類其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受意想不到的破壞。

解釋說明:

 比如:類T只負責一個職責P,這樣設計是符合單一職責原則的。後來由於某種原因,也許是需求變更了,也許是程序的設計者境界提高了,需要將職責P細分爲粒度更細的職責P1P2,這時如果要使程序遵循單一職責原則,需要將類T也分解爲兩個類T1T2,分別負責P1P2兩個職責。但是在程序已經寫好的情況下,這樣做簡直太費時間了。所以,簡單的修改類T,用它來負責兩個職責是一個比較不錯的選擇,雖然這樣做有悖於單一職責原則。(這樣做的風險在於職責擴散的不確定性,因爲我們不會想到這個職責P,在未來可能會擴散爲P1P2P3P4……Pn所以記住,在職責擴散到我們無法控制的程度之前,立刻對代碼進行重構

開放-封閉原則

 

1. 開放-封閉原則定義:

軟件實體(類、模塊、函數等)可以擴展,不可修改。對於擴展是開放的,對於更改是封閉的。

2.解釋說明:

該原則意思就是說,當設計的時候,時刻考慮好,讓這個類足夠好,寫好了就不要去修改,當有新的需求,增加一些類,原來的代碼則不改動。


本文參考網上博客及大話設計模式總結。

發佈了10 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章