源碼解析|面向對象的六大原則

面向對象的六大原則

文章目錄

1)單一職責原則(SRP)
2)里氏替換原則(LSP)
3)依賴倒置原則(DIP)
4)接口隔離原則(ISP)
5)迪米特原則(LOD)


在應用開發過程中,最難的不是完成應用的開發工作,而是在後續的升級、維護過程中讓應用系統能夠擁抱變化。
擁抱變化也就意味着在滿足需求且不破壞系統穩定性的前提下保持高可擴展性、高內聚、低耦合,在經歷了各版本的變更之後依然保持清晰、靈活、穩定的系統架構。

面向對象的六大原則

1.單一職責原則(SRP)

  • 一個類中應該是一組相關性很高的函數、數據的封裝
  • 單一職責的劃分界限並不是總是那麼清楚,很多時候都是需要靠個人經驗來界定。
  • 應當不斷審視自己的代碼,根據具體的業務、功能對類進行相應拆分。

2.開閉原則(OCP)

  • Java世界裏最基礎的設計原則,軟件中的對象(類、模塊、函數等)應該對於擴展是開放的,但是對於修改是封閉的
  • 當軟件需要變化時,應該儘量通過擴展的方式來實現變化,而不是通過修改已有的代碼來實現。

3.里氏替換原則(LSP)

  • 所有引用基類的地方必須能透明的使用其子類的對象,通俗的講,只要父類能出現的地方子類就可以出現,而且替換爲子類也不會產生任何錯誤或異常,但是反過來就不行了。
  • 依賴於繼承、多態這兩大特性。
    • 繼承的優缺點:
      • 優點:
        1)代碼重用,減少創建類的成本,每個子類都擁有父類的方法與屬性;
        2)子類與父類基本相似,但與父類又有所區別;
        3)提高代碼的可擴展性。
      • 缺點:
        1)繼承是侵入性的,只要繼承就必須擁有父類所有的屬性與方法;
        2)可能造成子類代碼冗餘、靈活性降低。

4.依賴倒置原則(DIP)

  • 指代一種特定的解耦方式,使得高層次的模塊不依賴於低層次的模塊的實現細節的目的。
  • 關鍵點:
    (1)高層模塊不應該依賴低層模塊,兩者都應該依賴其抽象;
    (2)抽象不依賴細節;
    (3)細節應依賴抽象。
  • 在Java中,抽象就是指接口或者抽象類,兩者都是不能直接被實例化的,細節就是實現類,實現接口或者繼承抽象類而產生的就是細節。高層模塊就是調用端,底層模塊就是具體實現類。
  • 模塊之間的依賴通過抽象發生,實現類之間不發生直接的依賴關係,其依賴關係是通過接口或者抽象類產生的。

5.接口隔離原則(ISP)

  • 類間的依賴關係應該建立在最小的接口上。將龐大,臃腫的接口拆分成更小的和更具體的接口。
  • 爲了讓系統解開耦合,從而容易重構、更改和重新部署。

6.迪米特原則(LOD)

  • 一個對象應該對其他對象有最少的瞭解,通俗的講,一個類應該對自己需要耦合或調用的類知道的最少,類的內部如何實現與調用者或者依賴者沒關係,調用者或依賴者只需要知道它需要的方法即可

參考

《Android源碼設計模式解析與實戰》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章