單一職責原則
1. 單一職責定義:
就一個類而言,應該僅有一個引起它變化的原因。通俗的說,即一個類只負責一項職責。
問題描述:
類T負責兩個不同的職責:職責P1,職責P2。當由於職責P1需求發生改變而需要修改類T時,有可能會導致原本運行正常的職責P2功能發生故障。
如果一個類承擔職責過多,就等於把這些職責耦合在一起,一個職責的變化可能會削弱或者抑制這個類其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受意想不到的破壞。
解釋說明:
比如:類T只負責一個職責P,這樣設計是符合單一職責原則的。後來由於某種原因,也許是需求變更了,也許是程序的設計者境界提高了,需要將職責P細分爲粒度更細的職責P1,P2,這時如果要使程序遵循單一職責原則,需要將類T也分解爲兩個類T1和T2,分別負責P1、P2兩個職責。但是在程序已經寫好的情況下,這樣做簡直太費時間了。所以,簡單的修改類T,用它來負責兩個職責是一個比較不錯的選擇,雖然這樣做有悖於單一職責原則。(這樣做的風險在於職責擴散的不確定性,因爲我們不會想到這個職責P,在未來可能會擴散爲P1,P2,P3,P4……Pn。所以記住,在職責擴散到我們無法控制的程度之前,立刻對代碼進行重構)
開放-封閉原則
1. 開放-封閉原則定義:
軟件實體(類、模塊、函數等)可以擴展,不可修改。對於擴展是開放的,對於更改是封閉的。
2.解釋說明:
該原則意思就是說,當設計的時候,時刻考慮好,讓這個類足夠好,寫好了就不要去修改,當有新的需求,增加一些類,原來的代碼則不改動。
本文參考網上博客及大話設計模式總結。