本文屬於Java軟件設計原則系列文章的其中一篇,後續會繼續分享其餘的原則。想以最簡單的方式,最直觀的demo去完全理解設計原則。文章屬於我的整理。也歡迎你們提出不一樣的想法。spring
首先是一些理論性知識框架
開閉原則,The Open-Closed Principle (OCP)。函數
一個軟件實體,如類、模塊和函數對擴展開放,對修改關閉。測試
優勢設計
遵循開閉原則的系統設計,可讓軟件系統可複用,而且易於維護。blog
此處借用一句話接口
用抽象構建框架,用實現擴展細節。ip
我的認爲spring框架源碼把上面這句話體現的淋漓盡致。ci
而後是代碼實戰源碼
定義一個手機商品的接口
定義手機商品,實現接口
main方法模擬展現手機商品
某天,商城要對手機商品作促銷活動,對手機打九折,該如何作呢?
如上圖,在獲取手機商品價格時,直接乘以0.9。沒問題,徹底能夠實現。
可是這樣作,修改了原有的代碼,活動結束後,還須要再修改回來。修改了原有的代碼,確定須要對涉及該手機商品的功能都須要從新測試,無疑增長了工做量。
最好的解決方案是對手機商品類進行擴展,以下圖
再次查看main方法模擬展現手機商品
以上就是經過簡單的demo對開閉原則的理解。歡迎你們作出評論