這是在我大學學習過程中,老師給我講的第一個設計原則:開閉原則,至今為止,我只記住了一句話:程序對修改關閉,對擴展開放。接下來得好好理解一下這句話
一、開閉原則

開閉原則是編程中最基礎、最重要的設計原則
基本介紹:
(1)一個軟件實體如類,模塊和函數應該對擴展開放(對於提供方來說),對修改關閉(對於使用方來說)。用抽象構建框架,用實現擴展細節。
(2)當軟件需要變化時,盡量通過擴展軟件實體的行為來實現變化,而不是通過修改已有的代碼來實現變化。
(3)編程中遵循其它原則,以及使用設計模式的目的就是遵循開閉原則。
二、案例演示
要求:實現一個畫圖形的功能

案例地址:https://github.com/Simple-Coder/design-pattern
1、基礎版本代碼實現

分析:
1、優點:比較好理解,簡單易操作
2、缺點:違反了開閉原則(即對修改關閉(使用方),對擴展開放(提供方)),即當我們給類增加新功能的時候,盡量不修改代碼或盡可能少修改代碼。
2、基礎班新增功能,畫三角形

可以發現,當新增畫三角形時,需要做如上述修改,修改的地方較多。
3、基於OCP原則改進
改進思路:將Shape類改進為抽象類,並提供一個抽象方法draw方法,讓子類去實現即可,這樣有新的圖形種類時,只需要讓新的圖形類繼承Shape,並實現draw方法即可,使用方的代碼就不需要修改,滿足開閉原則。

4、基於OCP新增功能:畫三角形

分析:代碼滿足OCP原則,對修改關閉,對擴展開放
