走向靈活軟體之路——物件導向的六大原則

來源:互聯網
上載者:User

標籤:

一、最佳化代碼的第一步:單一職責原則

  英文名:Single Responsibility Principle (SRP

  定義:就一個類而言,應該僅有一個引起它變化的原因。

       簡單來說,一個類中應該是一組相關性很高的函數、資料的封裝。

  範例程式碼:

    

二、讓程式更穩當、更靈活:開閉原則

  英文名:Open Close Principle (OCP

  定義:軟體中的對象(類、模組、函數等)應該對於擴充是開放的,當時,對於修改是封閉的。 

       在軟體的生命週期中,因為變化、升級和維護等原因需要對軟體原有代碼進行修改時,可能會將錯誤引入原本已近經過測試的舊代碼中,破壞原有系統。

    因此,當軟體需求變化時,我們應該盡量通過擴充的方式來實現變化,而不是通過修改已有代碼來實現。當然,在現實開發過程中,只通過繼承的方式來升級、

    維護原有系統只是一個理想化的願景,因此,在實際開發中,修改原有代碼、擴充代碼往往是同時存在的。

  程式碼範例:

 

三、構建擴充性更好的系統:裡氏替換原則

    英文名:Liskov Substitution Principle (LSP)

  第一種定義:如果對每一個類型為S的對象O1,都有類型為T的對象O2,使得以T定義的所有程式P在所有的對象O1都代換成O2時,程式P的行為沒有發生變化,

        那麼類型S是類型T的子類型。

  第二種定義:所有引用基類的地方必須能透明地使用其子類的對象。

  核心原理是抽象,抽象又依賴於繼承;

    繼承優點有:

        ①代碼重用,減少建立類的成本,每個子類都擁有父類的方法和屬性

        ②子類與父類相似,但又與父類有所區別

        ③提高代碼的可擴充性

    缺點:

      ①繼承是侵入性的,只要繼承就必須擁有父類的所有屬性和方法

      ②可能造成子類代碼冗餘、靈活性降低,因為子類必須擁有父類的屬性和方法

  程式碼範例:

 

四、讓項目擁有變化的能力:依賴倒置原則

  英文名:Dependence Inversion Principle (DIP)

  定義:指代了一種特定的解耦形式,使得高層次的模組不依賴於低層次的模組的實現細節的目的

  關鍵點:  

    ①高層模組不應該依賴低層模組,兩者都應該依賴其抽象

    ②抽象不應該依賴細節

    ③細節應該依賴抽象

  Java中,抽象 就是指介面或者抽象類別,兩者都是不能直接被執行個體化的;

      細節 就是實作類別,實現介面或者繼承抽象類別而產生的類就是細節,特點是,可以直接被執行個體化,即可以通過關鍵字 new 產生一個對象。

      高層模組就是調用端;

      低層模組 就是具體實作類別。

  使用:

    模組間的依賴通過抽象發生,實作類別之間不發生直接的依賴關係,其依賴關係是通過介面或抽象類別產生。

    簡單點說就是: 面向介面(介面或者抽象類別)編程,或者面向抽象編程。

  範例程式碼:

 

五、系統有更高的靈活性:介面隔離原則

  英文名:InterfaceSegregation Principle (ISP)

  第一種定義: 用戶端不應該依賴它不需要的介面

  第二種定義:類間的依賴關係應該建立在最小的介面上

    目的是系統解開耦合,從而容易重構、更改和重新部署; 將龐大、臃腫的介面拆分成更小的更具體的介面。

  樣本代碼:

 

六、更好地可擴充性:迪米特原則

  英文名:Law Of Demeter (LOD)

  定義:一個對象應該對其他對象有最少的瞭解、

      通俗地講,一個類應該對自己需要耦合或調用的類知道的最少,類的內部如何?與調用者或者依賴者沒關係,調用者或者依賴者只需要知道它需要的

    方法即可,其他的可一概不用管。

  

走向靈活軟體之路——物件導向的六大原則

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.