設計模式之前轉-OO設計原則

來源:互聯網
上載者:User

原則1:最小化類及其屬性/方法的存取權限。(Minimize The Accessibility of Classes and Members)

通過封裝,抽象實現資訊的隱藏。盡量聲明屬性為私人。之通過相應的共有方法去訪問這些屬性。

 

 

原則2:組合由於繼承。(Favor Composition Over Inheritance)

 

除了繼承之外,我們還可以通過將現有的對象組合起來實現新的功能來達到重用的目的。新的功能可以通過代理的方式來實現。有些時候我們也可以用彙總(aggregation)的方式來實現。

 

使用繼承的問題:

 

  • 破壞了封裝。子類必須知道父類的實現細節才能夠使用或重寫父類的方法。(“白盒”方式的重用)
  • 如果父類的實現細節被改變,則子類必須改變。
  • 子類中從父類繼承過來的實現細節不能在運行時被改變。
  • 濫用繼承會導致非常複雜的繼承樹結構。從而影響系統的重用性。

使用組合的優點:

  • 被包含的對象只能通過其包含對象來訪問,這樣就實現了“黑盒”方式的重用。
  • 減少了很多實現時的依賴。例如用戶端不需要依賴被包含對象。
  • 每一個類可以只關注一個簡單的任務。
  • 對象的組合可以在運行時動態地來定義。

原則3:依賴倒置原則(Dependency Inversion Principle)

這個原則也是常說的"面向介面而非面向其實現編程"。這樣在將來任何該介面的實作類別都可以不做任何修改地工作在用戶端。

 

 

原則4:開閉原則(Open-Close Principle)

一旦一個類已經交付使用,該類可以允許繼承但不應該允許直接的修改。但是在一個系統的實現中不可能總是遵循OCP原則,但應盡量地去遵守。

 

 

原則5:Liskov替換原則(LSP)

子類型必須在任何時候都能替換父類型。這樣的好處就是客戶類只需要面向父類或介面編程就可以了,而不需要關心任何可能的子類。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.