定義:顧名思義,單一職責的原則是說乙個類直負責一項職責(操作)。如果乙個類負責多個職責,其中一項職責發生變化就需要修改整個類,這可能會導致其他的職責執行錯誤。乙個類,只應該有乙個引起它變化的原因。
其優點有:
定義:黎克特制替換的意思是說所有引用基類的地方必須能透明地使用其子類的物件。這種情況在**中隨處可以,我們在類中使用基類進行定義,而在執行時使用子類物件,為了確保**執行正常,在實現子類時要注意以下一些地方:
定義:抽象不應該依賴於細節,細節應當依賴於抽象。換言之,要針對介面程式設計,而不是針對實現程式設計。依賴倒置原則要求我們在程式**中傳遞引數時或在關聯關係中,盡量引用層次高的抽象層類,即使用介面和抽象類進行變數型別宣告、引數型別宣告、方法返回型別宣告,以及資料型別的轉換等,而不要用具體類來做這些事情。依賴倒置原則的本質就是通過抽象(介面或抽象類)使各個類或模組的實現彼此獨立,不互相影響,實現模組間的松耦合。在編寫**中落到實處,需要注意以下一些地方:
由於 python 是一門動態語言,在傳遞引數時不需要定義具體型別,所以依賴倒置原則其實一定程度上已經內嵌在了 python 語言中。
介面隔離原則提示我們客戶端不應該依賴它不需要的介面,乙個類對另乙個類的依賴應該建立在最小的介面上。根據介面隔離原則,當乙個介面太大時,我們需要將它分割成一些更細小的介面,使用該介面的客戶端僅需知道與之相關的方法即可。每乙個介面應該承擔一種相對獨立的角色,不幹不該幹的事,該幹的事都要幹。
看到這裡你們或許認為介面隔離原則與單一職責原則是相同的。其實介面隔離原則與單一職責原則的審視角度是不相同的,單一職責原則要求的是類和介面職責單一,注重的是職責,這是業務邏輯上的劃分,而介面隔離原則要求介面的方法盡量少。在使用介面隔離原則時,我們需要注意控制介面的粒度,介面不能太小,如果太小會導致系統中介面氾濫,不利於維護;介面也不能太大,太大的介面將違背介面隔離原則,靈活性較差,使用起來很不方便。一般而言,介面中僅包含為某一類使用者定製的方法即可,不應該強迫客戶依賴於那些它們不用的方法。
定義:乙個物件應該對其他物件有最少的了解。通俗地講,乙個類應該對自己需要耦合或呼叫的類知道得最少,你(被耦合或呼叫的類)的內部是如何複雜都和我沒關係,那是你的事情,我就知道你提供的公開方法,我就呼叫這麼多,其他的我一概不關心。迪公尺特法則指導我們在設計系統時,應該儘量減少物件之間的互動,如果兩個物件之間不必彼此直接通訊,那麼這兩個物件就不應當發生任何直接的相互作用,如果其中的乙個物件需要呼叫另乙個物件的某乙個方法的話,可以通過第三者**這個呼叫。簡言之,就是通過引入乙個合理的第三者來降低現有物件之間的耦合度。可以看到迪公尺特原則在**模式和外觀模式中都有被使用。
定義:軟體實體應該對擴充套件開放,對修改關閉,其含義是說乙個軟體實體應該通過擴充套件來實現變化,而不是通過修改已有的**來實現變化。根據開閉原則,在設計乙個軟體系統模組(類,方法)的時候,應該可以在不修改原有的模組(修改關閉)的基礎上,能擴充套件其功能(擴充套件開放)。遵循開閉原則的系統設計,可以讓軟體系統可復用,並且易於維護。這也是系統設計需要遵循開閉原則的原因:
六大設計原則
1.單一職責原則 單一職責原則 single responsibility principle,srp 有且僅有乙個原因引起類的變更,乙個介面或類只有乙個職責。2.黎克特制替換原則 黎克特制替換原則 liskov substitution principle,lsp 所有引用基類的地方必須能透明地使...
六大設計原則
六大設計原則,按照英文首字母概括為sollid,可簡單理解為 solid 穩定的。這六大設計原則如下 single responsibility principle 單一職責原則 open closed principle 開閉原則 liskov substitution principle 黎克特...
六大設計原則
開閉原則 對擴充套件開放對修改關閉 軟體在生命週期內會發生變化,開閉原則告訴我們應該通過拓展軟體實體行為來實現變化而不是修改已有 來完成變化 改變要盡量少 變化型別 邏輯變化 子模組變化 可見檢視變化 優點 1.已有 是通過了測試的,減少了測試成本 2.提高復用性 顆粒度越小,被復用的可能性就越大,...