设计原则分享
丑女照片,美女照片
大家都能一眼看出這兩張圖片都區別。左邊丑,右邊美。
但是大家有沒有想過到底是根據什么來判斷丑美的呢? 都是根據美的標準,中國古代評價美不美根據這13項指標:膚、手、發、臉、目、鼻、唇、齒、頸、足、胸、腰、香。向標注靠的越近,也就越美。
那么對于代碼設計來說怎么評價美丑呢?代碼設計也有評價標準的。---設計原則,符合設計原則程度越高的設計越美
公認的設計原則有六大設計原則,
- 一、單一職責原則
- 二、里氏替換原則
- 三、依賴倒置原則
- 四、接口隔離原則
- 五、迪米特法則
- 六、開閉原則
這次就給大家分享一下這六大設計原則的定義,附帶個人理解,希望能給大家理解時打個輔助。
?
1,開閉原則
定義:軟件中的對象(類,模塊,函數等等)應該對于擴展是開放的,但是對于修改是封閉的
理解: 一個軟件對象,可以在不改變源碼的情況下,通過新增對象來擴展新的功能。
?遵守原則的優勢 :
1,易擴展
? ?擴展不需要太過關心原有功能的具體邏輯,只需要關注原有邏輯提供的擴展方式就可以開始新需求的開發
2,易維護
? 由于開發新需求不需要更改原有功能的代碼,這樣就可以需要過多測試就能保證原有功能的穩定性。
?
難點:
開閉原則是一種理想情況,要想做到現有架構對任何擴展都做到開閉原則是不現實的。退而求次能做到對可預期的擴展做到開閉原則就已經是優秀的設計了。
?
開發項目最大的困難就是,原本架構不支持擴展的新需求。導致實現簡單的新需求也很難實現,甚至要重構架構才能實現新需求。
開發項目最大的風險就是,開發新需求的時候會對原有功能造成不可預期的影響。
遵守開閉原則后,項目中最大的困難和最大的風險都不存在來,這樣都項目開發起來不要太幸福;
?
2,單一職責原則
定義:應該有且僅有一個原因引起類的變更
理解: 一個方法,一個類或者一個接口只有一個原因引起變化,它就只負責一件事情,也就是只有一個職責。如果一個對象,負責兩個功能。但兩個功能的代碼耦合性很高的情況下。那么改變其中一個功能的代碼時,就不能保證一定不會對另外一個功能造成影響。如果將這個對象,分成兩個對象分別負責一個功能的話。改動其中一個功能時,你就可以有底氣都說,絕對,對另外一個功能的代碼不會造成任何影響
?遵守原則的優勢 :
1,對象的復雜性降低
? ?一個對象只負責一個功能的實現,那么這個對象的邏輯就會變的很簡單。如果還是很復雜只能說它的職責還可繼續劃分
2,可讀性提高
? ? 對象的復雜度降低了,自然就更容易讀懂了
3,可維護性提高
? ? ?對象的變的簡單了,容易讀懂了,自然就更容易維護了
4,變更風險降低了
? ?由于功能職責單一,變更之后的影響范圍降低了,存在的風險范圍自然就降低了?
難點:
單一職責要求職責單一。但是對職責對劃分是沒有固定模式的。對同一事情。從不同的角度和層次出發可以做出不同的職責劃分
?
?
2,依賴倒置原則
定義:高層模塊不應該依賴底層模塊,兩者都應該依賴抽象;抽象不應該依賴細節;細節應該依賴抽象
理解:?面向接口編程,就是說本來是A依賴B的。但現在A不再依賴B,而是依賴C,而B也依賴C ,C只是A和B約定的一個條約;
?遵守原則的優勢 :
1,對象的復雜性降低
? ?一個對象只負責一個功能的實現,那么這個對象的邏輯就會變的很簡單。如果還是很復雜只能說它的職責還可繼續劃分
2,可讀性提高
? ? 對象的復雜度降低了,自然就更容易讀懂了
3,可維護性提高
? ? ?對象的變的簡單了,容易讀懂了,自然就更容易維護了
4,變更風險降低了
? ?由于功能職責單一,變更之后的影響范圍降低了,存在的風險范圍自然就降低了?
難點:
單一職責要求職責單一。但是對職責對劃分是沒有固定模式的。對同一事情。從不同的角度和層次出發可以做出不同的職責劃分
?
轉載于:https://www.cnblogs.com/ldq2016/p/11397132.html
總結
- 上一篇: 试试 python-dotenv,避免敏
- 下一篇: 01入门