六大設計原則

2021-08-21 19:56:59 字數 1732 閱讀 1182

開閉原則 --對擴充套件開放對修改關閉 --軟體在生命週期內會發生變化,開閉原則告訴我們應該通過拓展軟體實體行為來實現變化而不是修改已有**來完成變化 --改變要盡量少

變化型別 : 邏輯變化 子模組變化 可見檢視變化

優點:1.已有**是通過了測試的,減少了測試成本

2.提高復用性  --顆粒度越小,被復用的可能性就越大,在修改**的時候當有原子邏輯改動時,不復用的**需要找到分散在專案中的所有相同邏輯,不利於維護。

3.提高可維護性 

4.物件導向開發的要求 --抽象是對不變事物的總結,實體實現的是可以變化的。設計之初規定不變事物,留下介面等待可能轉變為現實

使用:抽象約束--介面或抽象類約束包含三層含義

通過介面或者抽象類約束擴充套件不存在public方法 

引數型別、引用物件盡量用介面或者抽象類,而不是實現類

抽象層保持穩定,一旦確定不允許修改

元資料控制塊行為

1.盡量用配置引數來影響程式行為

制定專案章程

1.章程很重要,約定優於配置  --減少配置的手段 例子:springboot 注釋

封裝變化

1.將相同的變化封裝到乙個介面或者抽象類中

2.將不同的變化封裝到不同的介面或者抽象類中

開閉原則是個終極目標 任何人都不能百分之百做到 對於開閉原則的實現由其餘5大原則來體現。個人看法:原則終歸是原則,在現實層面常常會違背,考慮到工作量,技術架構等等,比如為了減少工作量引入dao自動生成工具,帶來了方便,但是同時系統不符合了開閉原則,但是考慮到工作量以及公司體量並不是不可以接受,水至清則無魚,具體問題具體分析。

單一職責原則

定義:有且僅有乙個原因引起類的變更

好處:類的複雜性降低,職責有明確定義

可讀性提高,複雜性降低,容易維護

變更風險降低,易於擴充套件

單一職責原則 --盡量做到介面單一,類設計盡量做到只有乙個原因引起變化

黎克特制置換原則

定義:所有引用基類的地方必須透明地使用其子類物件

4層含義:

1.子類必須完全實現父類方法

2.子類可以有自己的「個性」

3.覆蓋或實現父類方法時輸入引數可以被放大

4.覆蓋父類方法時輸出結構可以被縮小

在專案中把子類當父類使用,子類個性體現不出來。如果把子類單獨作為乙個業務來使用,會讓**耦合關係變得撲朔迷離。

依賴倒置

定義:高模組不應該依賴低模組,應該依賴於其抽象 抽象不應該依賴細節 細節應該依賴抽象

優點:減少類的耦合,提高系統穩定性,降低並行開發引起的風險,提高可讀性可維護性

簡而言之就是面向介面程式設計。

介面隔離原則

定義:類間依賴關係應該建立在最小的介面上 --介面應該盡量細化--介面中的方法應該盡量少

4層含義:

1.介面盡量小

2.介面要高內聚

3.定**務

4.介面設計是有限度的

介面顆粒度大小根據需求變更有關,顆粒度大了,靈活性降低,需求變更需要修改**,顆粒度小了,介面數量劇增,維護與開發難度增大。

迪公尺特法則

定義:乙個物件應該對其他物件有最少的了解

含義:1.只和耦合類物件交流

2.盡量降低耦合關係

3.如果乙個方法放在本類中,既不增加類間關係,也對本類不產生負面影響,就放置在本類中

4.謹慎使用serializable

核心是解耦,只有弱耦合才能提高類的復用率。但一味解耦會產生大量中間類和跳轉類,可能導致系統複雜性提高,為維護帶來困難。

六大設計原則

1.單一職責原則 單一職責原則 single responsibility principle,srp 有且僅有乙個原因引起類的變更,乙個介面或類只有乙個職責。2.黎克特制替換原則 黎克特制替換原則 liskov substitution principle,lsp 所有引用基類的地方必須能透明地使...

六大設計原則

六大設計原則,按照英文首字母概括為sollid,可簡單理解為 solid 穩定的。這六大設計原則如下 single responsibility principle 單一職責原則 open closed principle 開閉原則 liskov substitution principle 黎克特...

六大設計原則

總體遵循開閉原則 open close principle 即對擴充套件開放,對修改關閉。1 單一職責原則 不要存在多餘乙個導致類變更的原因,每個類保持單一的職責,如若不然,就需要把類拆分。2 黎克特制代換原則 liskov substitution principle 黎克特制代換原則 lisko...