簡單粗暴,Java設計模式六大原則的理解

六大原則

  • 單一職責原則編程

  • 里氏替換原則設計模式

  • 依賴倒置原則緩存

  • 接口隔離原則網絡

  • 迪米特原則框架

  • 開閉原則函數

單一職責

  • 概念:對功能進行分類,代碼進行解耦測試

  • 栗子:一個網絡請求框架大體分爲:請求類,緩存類,配置類;不能把這三個功能混合在一塊兒,必須分紅三個類分別去實現不一樣的功能設計

里氏替換

  • 概念:在繼承類時,除了擴展一些新的功能以外,儘可能不要刪除或者修改對父類方法的引用,也儘可能不要重載父類的方法對象

  • 栗子:每一個類都是Object的子類,Object類中有一個toString()的方法,假如子類重寫該方法而且返回null,這個子類的下一級繼承返回的都是null,那麼在不一樣開發人員維護時可能考慮不到這個問題,而且極可能會致使程序崩潰繼承

依賴倒置

  • 概念:高層模塊不依賴低層次模塊的細節,高層次就是不依賴細節而是依賴抽象(不依賴具體的類,而是依賴於接口)

  • 栗子:某個網絡框架爲了知足不一樣開發者的需求,即能使用高效的OkHttp框架,也可使用原生的API。正所謂蘿蔔白菜各有所愛,那麼是如何進行切換的呢,這個時候須要面向接口編程思想了,把一些網絡請求的方法封裝成一個接口,而後分別建立OkHttp和原生API的接口實現類,固然也方便後續其餘開發人員進行擴展其餘網絡框架的應用

接口隔離

  • 概念:在定義接口方法時應該合理化,儘可能追求簡單最小,避免接口臃腫

  • 栗子:在實際開發中,每每爲了節省時間,可能會將多個功能的方法抽成一個接口,其實這設計理念不正確的,這樣會使接口處於臃腫的狀態,這時就須要合理的拆分接口中的方法,另外抽取成一個獨立的接口,避免原有的接口臃腫致使代碼理解困難

迪米特 | 最少知道

  • 概念:一個對象應該對其餘對象有最少的瞭解;一個類應該對本身須要耦合或調用的類知道得最少,類的內部如何實現、如何複雜都與調用者或者依賴者不要緊,調用者或者依賴者只須要知道他須要的方法便可,其餘的一律不關心。類與類之間的關係越密切,耦合度越大,當一個類發生改變時,對另外一個類的影響也越大。只與直接的朋友通訊。每一個對象都必然會與其餘對象有耦合關係,兩個對象之間的耦合就成爲朋友關係,這種關係的類型有不少,例如組合、聚合、依賴等。

  • 栗子:通常在使用框架的時候,框架的開發者會抽出一個類供外部調用,而這個主要的類像是一箇中介同樣去調用框架裏面的其餘類,偏偏框架裏面其餘類通常都是不可訪問(調用)的,這個框架就遵照了迪米特原則,其餘開發人員只關心調用的方法,並不須要關心功能具體如何實現

開閉

  • 概念:類、模塊和函數應該對擴展開放,對修改關閉

  • 栗子:在軟件的生命週期內,由於變化、升級和維護等緣由須要對軟件原有代碼進行修改時,可能會給舊代碼中引入錯誤,也可能會使咱們不得不對整個功能進行重構,而且須要原有代碼通過從新測試,整個流程對開發週期影響很大,這個時候就須要開閉原則來解決這種問題

總結

  • 單一職責原則告訴咱們實現類要職責單一

  • 里氏替換原則告訴咱們不要破壞繼承體系

  • 依賴倒置原則告訴咱們要面向接口編程

  • 接口隔離原則告訴咱們在設計接口的時候要精簡單一

  • 迪米特原則告訴咱們要下降耦合

  • 開閉原則是總綱,告訴咱們要對擴展開放,對修改關閉

精品文章

設計模式六大原則

面向對象六大基本原則 - 網絡引擎切換

若是不夠準確,請幫忙指出

這篇文章要是對你有幫助的話,記得點個贊

相關文章
相關標籤/搜索