最簡單直接地理解Java軟件設計原則之開閉原則

寫在前面

本文屬於Java軟件設計原則系列文章的其中一篇,後續會繼續分享其餘的原則。想以最簡單的方式,最直觀的demo去完全理解設計原則。文章屬於我的整理。也歡迎你們提出不一樣的想法。spring

首先是一些理論性知識框架

 定義

開閉原則,The Open-Closed Principle (OCP)。函數

一個軟件實體,如類、模塊和函數對擴展開放,對修改關閉。測試

優勢設計

  1. 穩定性。開閉原則要求擴展功能不修改原來的代碼,可讓軟件系統在變化中保持穩定。
  2. 擴展性。開閉原則要求對擴展開放,經過擴展提供新的或改變原有的功能,讓軟件系統具備靈活的可擴展性。

遵循開閉原則的系統設計,可讓軟件系統可複用,而且易於維護。blog

此處借用一句話接口

用抽象構建框架,用實現擴展細節。ip

我的認爲spring框架源碼把上面這句話體現的淋漓盡致。ci

而後是代碼實戰源碼

定義一個手機商品的接口

最簡單直接地理解Java軟件設計原則之開閉原則

 

定義手機商品,實現接口

最簡單直接地理解Java軟件設計原則之開閉原則

 

main方法模擬展現手機商品

最簡單直接地理解Java軟件設計原則之開閉原則

 

某天,商城要對手機商品作促銷活動,對手機打九折,該如何作呢?

最簡單直接地理解Java軟件設計原則之開閉原則

 

如上圖,在獲取手機商品價格時,直接乘以0.9。沒問題,徹底能夠實現。

可是這樣作,修改了原有的代碼,活動結束後,還須要再修改回來。修改了原有的代碼,確定須要對涉及該手機商品的功能都須要從新測試,無疑增長了工做量。

最好的解決方案是對手機商品類進行擴展,以下圖

最簡單直接地理解Java軟件設計原則之開閉原則

 

再次查看main方法模擬展現手機商品

最簡單直接地理解Java軟件設計原則之開閉原則

 

以上就是經過簡單的demo對開閉原則的理解。歡迎你們作出評論

相關文章
相關標籤/搜索