Java面向對象六大原則


引用自百度知道: ——根據首字母快速記憶SOLID(固體,堅固的),具體請參考這里

    1) Open-Close Principle(OCP),開-閉原則,
  講的是設計要對擴展有好的支持,而對修改要嚴格限制。
這是最重要也是最為抽象的原則,基本上我們所說的Reusable Software既是基於此原則而開發的。其他的原則也是對它的實現提供了路徑。

  Java與模式中的描述:

 

  實現OCP原則的關鍵步驟就是抽象化——封裝變化!

 

    2) Liskov Substituition Principle(LSP),里氏替換原則,
  很嚴格的原則,規則是“子類必須能夠替換基類,否則不應當設計為其子類。”也就是說,子類只能去擴展基類,而不是隱藏或覆蓋基類. 

  Java與模式中的描述:

  

 

    3) Dependence Inversion Principle(DIP),依賴倒置原則,
  “設計要依賴於抽象而不是具體化”。換句話說就是設計的時候我們要用抽象來思考,而不是一上來就開始划分我需要哪些哪些類,
因為這些是具體。這樣做有什么好處呢?人的思維本身實際上就是很抽象的,我們分析問題的時候不是一下子就考慮到細節,
而是很抽象的將整個問題都構思出來,所以面向抽象設計是符合人的思維的。另外這個原則會很好的支持OCP,
面向抽象的設計使我們能夠不必太多依賴於實現,這樣擴展就成為了可能,這個原則也是另一篇文章《Design by Contract》的基石。 

  Java與模式中的描述

   

  更加詳細的例子,我們可以參見百度百科給出的例子點擊查看

 

    4) Interface Segregation Principle(ISP),“將大的接口打散成多個小接口”,接口隔離原則
  這樣做的好處很明顯,我不知道有沒有必要再繼續描述了,為了節省篇幅,實際上我對這些原則只是做了一個小總結,
如果有需要更深入了解的話推薦看《Java與模式》,MS MVP的一本巨作!^_^

  Java與模式中的描述

  

  

 

  也就是上文說的,你應當說我要找一個男主角,而不是說我要找一個演員

    5) Composition/Aggregation Reuse Principle(CARP),單一職責原則,聚合復用原則
  設計者首先應當考慮復合/聚合,而不是繼承(因為它很直觀,第一印象就是“哦,這個就是OO啊”)。
這個就是所謂的“Favor Composition over Inheritance”,在實踐中復合/聚合會帶來比繼承更大的利益,所以要優先考慮。

 Java與模式中的描述

   這里所描繪的聚合是黑箱復用(不需要知道細節),而繼承是白箱復用(父類對子類是透明的)

  這里需要特別區分的概念是 is-a與has-a的關系

    6) Law of Demeter or Least Knowlegde Principle(LoD or LKP),迪米特法則或最少知識原則,
  這個原則首次在Demeter系統中得到正式運用,所以定義為迪米特法則。它講的是“一個對象應當盡可能少的去了解其他對象”。
也就是又一個關於如何松耦合(Loosely-Coupled)的法則。

  核心就是兩個類/兩個系統之間知道的東西越少越好!最好是“老死不相往來”;狹義的迪米特法則中也有相關的概念——調用轉發,盡量使用一個第三者的朋友來進行通信如果必須要通信的話。

  Java與模式中有對“朋友”的具體描述:

  

 

    更多有關6大原則的介紹,參見http://www.cnblogs.com/esther-qing/p/6490610.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM