淺談“開閉原則”
《架構整潔之道》第8章讀書札記
一個設計良好的計算機系統應該在不需要修改的前提下就可以輕易被擴充套件。
這個道理一說出來,想必身為被需求經常改變而備受折磨的程式設計師會深深認同。但不需要被修改!這是這麼辦到的?
下面來說下我領悟到的步驟:
1.分層設計
作為有一定經驗的程式必須要有能力去將程式設計進行分層。分層設計,雖然在執行程式的速度上可能會帶來一定的損失。但是想想MVC的思想如此重要就知道分層設計帶來的好處。而分層設計又是以單一職責(SRP)為基礎,必須根據這一原則去進行分層。不然你設計的分層也不是真正的分層。
其實我們在寫程式中就能體現到單一職責(SRP),我們往往會把功能為一類的歸結到一個地方(類),慢慢地形成元件,而功能關聯的元件組合到一起也就慢慢形成一個層次。作為初級程式設計師,眼裡只會看到一大堆需求而已,不會劃分職責。所以他們的程式碼往往會職責不清,可怕的是修改一個地方,涉及到整個系統。
2.減少依賴
如果一個層級在設計上沒有依賴,那麼觸動它改變的只有它自身了。這時候我會想起一句話:高內聚,低耦合!
3.給層級分等級
高層設計不應該依賴於低層設計。這是因為:
高階元件不會因低階元件被修改而受到影響。