架構設計要按照什麼原則進行呢?
一、單一職責原則(Single Responsibility Principle)
說到單一職責原則,很多人都會不屑一顧。稍有經驗的程式設計師即使從來沒有讀過設計模式、從來沒有聽說過單一職責原則,在設計軟體時也會自覺的遵守這一重要原則,因為這是常識。
在軟體程式設計中,誰也不希望因為修改了一個功能導致其他的功能發生故障。而避免出現這一問題的方法便是遵循單一職責原則。
雖然單一職責原則如此簡單,並且被認為是常識,但是即便是經驗豐富的程式設計師寫出的程式,也會有違背這一原則的程式碼存在。
為什麼會出現這種現象呢?因為有職責擴散。所謂職責擴散,就是因為某種原因,職責P被分化為粒度更細的職責P1和P2。
單一職責原則的優點有:
可以降低類的複雜度,一個類只負責一項職責,其邏輯肯定要比負責多項職責簡單的多;gendan5.com/af/shangzheng.html
提高類的可讀性,提高系統的可維護性;
變更引起的風險降低,變更是必然的,如果單一職責原則遵守的好,當修改一個功能時,可以顯著降低對其他功能的影響。
單一職責原則不只是物件導向程式設計思想所特有的,只要是模組化的程式設計,都需要遵循這一重要原則。
二、依賴倒轉原則(Dependence Inversion Principle)
高層模組不應該依賴低層模組,二者都應該依賴其抽象;抽象不應該依賴細節;細節應該依賴抽象。
即針對介面程式設計,不要針對實現程式設計,依賴倒轉其實就是誰也不要依靠誰,除了約定的介面,大家都可以靈活自如。
依賴倒轉可以說是物件導向設計的標誌,用哪種語言來編寫程式不重要,如果編寫時考慮的都是如何針對抽象程式設計而不是針對細節程式設計,即程式中所有的依賴關係都是終止於抽象類或者介面,那就是物件導向的設計,反之那就是過程化的設計了。
如果設計的各個部件或類相互依賴,這樣就是耦合度高,難以維護和擴充套件,這也就體現不出物件導向的好處了。
三、迪米特法則(Law Of Demeter)
迪米特法則其根本思想,是強調了類之間的松耦合,類之間的耦合越弱,越有利於複用,一個處在弱耦合的類被修改,不會對有關係的類造成影響,也就是說,資訊的隱藏促進了軟體的複用。
自從我們接觸程式設計開始,就知道了軟體程式設計的總的原則:低耦合,高內聚。無論是程式導向程式設計還是物件導向程式設計,只有使各個模組之間的耦合儘量的低,才能提高程式碼的複用率。低耦合的優點不言而喻,但是怎麼樣程式設計才能做到低耦合呢?那正是迪米特法則要去完成的。
迪米特法則又叫最少知道原則,通俗的來講就是一個類對自己依賴的類知道的越少越好。也就是說對於被依賴的類來說,無論邏輯多麼複雜,都儘量地的將邏輯封裝在類的內部,對外除了提供的public方法,不對外洩漏任何資訊。
迪米特法則還有一個更簡單的定義:
只與直接的朋友通訊。首先來解釋一下什麼是直接的朋友:每個物件都會與其他物件有耦合關係,只要兩個物件之間有耦合關係,我們就說這兩個物件之間是朋友關係。
耦合的方式很多,依賴、關聯、組合、聚合等。其中,我們稱出現成員變數、方法引數、方法返回值中的類為直接的朋友,而出現在區域性變數中的類則不是直接的朋友。也就是說,陌生的類最好不要作為區域性變數的形式出現在類的內部。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014563/viewspace-2886530/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 為什麼以及如何要進行架構設計權衡?架構
- SOLID架構設計原則Solid架構
- 雲原生架構及設計原則架構
- 軟體架構師必讀!什麼是設計?如何進行設計?架構
- 架構整潔之道二(設計原則)架構
- [分散式]架構設計原則--高併發分散式架構
- 簡單介紹架構設計的原則!架構
- Web前端技術知識:為什麼要進行網站重構呢?Web前端網站
- 軟體設計中最關鍵的“開閉原則”,究竟指什麼呢?
- 架構師進階,微服務設計與治理的16條常用原則架構微服務
- Angular應用架構設計-5:設計原則與總結Angular應用架構
- 架構設計的五大原則-SOLID架構Solid
- 360°透視:雲原生架構及設計原則架構
- 為什麼要進行領域驅動設計? - Vincent
- 設計和架構:業務開發指導原則架構
- 【虹科乾貨】設計微服務架構的原則微服務架構
- 【架構設計】你真的理解軟體設計中的SOLID原則嗎?架構Solid
- 什麼是真正的架構設計?架構
- [開發故事]架構師修煉 III - 掌握設計原則架構
- 掌握4C原則,設計高效的系統架構架構
- 借降本增效之名,探索開閉原則架構設計架構
- Apache 的架構師們遵循的 30 條設計原則Apache架構
- ui設計師要懂哪些B端設計原則?UI
- 幽默:四大設計原則要點
- 在設計原則中,為什麼反覆強調組合要優於繼承?繼承
- 雲端計算架構設計6大原則遵循了哪些?架構
- 學程式設計要什麼基礎,零基礎呢?程式設計
- 什麼是軟體架構設計?- Grady架構
- 架構之思-分析那些深入骨髓的設計原則架構
- 程式碼架構設計-1.為什麼要做好程式碼架構設計架構
- 為什麼要重構?深入探討重構的原則、範圍和時機
- 【架構設計】保持簡單輕量設計的三個原則——DRY,KISS, YAGNI架構
- 架構設計中的基本原則架構
- 為什麼很多人要學習Linux雲端計算運維進入IT行業呢?Linux運維行業
- 架構設計 | 介面冪等性原則,防重複提交Token管理架構
- 如何進行雲端儲存架構框架設計?架構框架
- .NET 雲原生架構師訓練營(設計原則&&設計模式)--學習筆記架構設計模式筆記
- 資料架構需要遵守哪些規則呢?架構