實際上都是互補的,也就是說一些原則需要利用另一些原則來實現自己。 6大原則如下: 1)單一職責原則,一個合理的類,應該僅有一個引起它變化的原因,即單一職責,就是設計的這個類功能應該只有一個; 優點:消除耦合,減小因需求變化引起代碼僵化。 2) 開-閉原則,講的是設計要對擴展有好的支持,而對修改要嚴格 ...
實際上都是互補的,也就是說一些原則需要利用另一些原則來實現自己。
6大原則如下:
1)單一職責原則,一個合理的類,應該僅有一個引起它變化的原因,即單一職責,就是設計的這個類功能應該只有一個;
優點:消除耦合,減小因需求變化引起代碼僵化。
2) 開-閉原則,講的是設計要對擴展有好的支持,而對修改要嚴格限制。
優點:降低了程式各部分之間的耦合性,其適應性、靈活性、穩定性都比較好。當已有軟體系統需要增加新的功能時,不需要對作為系統基礎的抽象層進行修改,只需要在原有基礎上附加新的模塊就能實現所需要添加的功能。增加的新模塊對原有的模塊完全沒有影響或影響很小,這樣就無須為原有模塊進行重新測試。
3) 里氏代換原則,很嚴格的原則,規則是“子類必須能夠替換基類,否則不應當設計為其子類。”也就是說,子類只能去擴展基類,而不是隱藏或覆蓋基類,
優點:可以很容易的實現同一父類下各個子類的互換,而客戶端可以毫不察覺。
4) 依賴倒換原則,“設計要依賴於抽象而不是具體化”。換句話說就是設計的時候我們要用抽象來思考,而不是一上來就開始劃分我需要哪些哪些類,因為這些是具體。
優點:人的思維本身實際上就是很抽象的,我們分析問題的時候不是一下子就考慮到細節,而是很抽象的將整個問題都構思出來,所以面向抽象設計是符合人的思維的。另外這個原則會很好的支持(開閉原則)OCP,面向抽象的設計使我們能夠不必太多依賴於實現,這樣擴展就成為了可能,這個原則也是另一篇文章《Design by Contract》的基石。
5) 介面隔離原則,“將大的介面打散成多個小介面”,讓系統解耦,從而容易重構,更改和重新部署。
優點:會使一個軟體系統功能擴展時,修改的壓力不會傳到別的對象那裡。
6) 迪米特法則或最少知識原則,這個原則首次在Demeter系統中得到正式運用,所以定義為迪米特法則。它講的是“一個對象應當儘可能少的去瞭解其他對象”。
優點:消除耦合。