2.7開閉原則
內(nèi)容來自尚硅谷Java設(shè)計(jì)模式(圖解+框架源碼剖析)_嗶哩嗶哩_bilibili
寫在前面:本文內(nèi)容大致和原視頻內(nèi)老師的筆記內(nèi)容相同,會(huì)偶爾插入自己的注釋和理解,盡量會(huì)完成作業(yè)
這集簡單
2.7開閉原則
2.7.1基本概念
1)????? 開閉原則(Open Closed Principle)是編程中最基礎(chǔ)、最重要的設(shè)計(jì)原則
2)????? 一個(gè)軟件實(shí)體如類,模塊和函數(shù)應(yīng)該對擴(kuò)展開放(對提供方),對修改關(guān)閉(對使用方)。用抽象構(gòu)建框架,用實(shí)現(xiàn)擴(kuò)展細(xì)節(jié)。
個(gè)人理解:對拓展開放就是說要提高可維護(hù)性,要便于增加功能,避免在增加功能的時(shí)候,修改了已有的代碼,因?yàn)橛锌赡軐?dǎo)致正在調(diào)用這個(gè)方法的某個(gè)程序出bug,對修改關(guān)閉就是說盡量減少對客戶端的代碼的修改,客戶端僅僅用最簡單的調(diào)用方法即可
3)????? 當(dāng)軟件需要變化時(shí),盡量通過擴(kuò)展軟件實(shí)體的行為來實(shí)現(xiàn)變化,而不是通過修改已有的代碼來實(shí)現(xiàn)變化。
4)????? 編程中遵循其它原則,以及使用設(shè)計(jì)模式的目的就是遵循開閉原則。
2.7.2看下面一段代碼
看一個(gè)畫圖形的功能。
類圖設(shè)計(jì),如下:

代碼演示
2.7.3方式1的優(yōu)缺點(diǎn)
1)????? 優(yōu)點(diǎn)是比較好理解,簡單易操作。
2)????? 缺點(diǎn)是違反了設(shè)計(jì)模式的ocp原則,即對擴(kuò)展開放(提供方),對修改關(guān)閉(使用方)。即當(dāng)我們給類增加新功能的時(shí)候,盡量不修改代碼,或者盡可能少修改代碼.
3)????? 比如我們這時(shí)要新增加一個(gè)圖形種類三角形,我們需要做如下修改,修改的地方較多
2.7.4改進(jìn)的思路分析
思路:把創(chuàng)建Shape類做成抽象類,并提供一個(gè)抽象的draw方法,讓子類去實(shí)現(xiàn)即可,這樣我們有新的圖形種類時(shí),只需要讓新的圖形類繼承Shape,并實(shí)現(xiàn) draw方法即可,使用方的代碼就不需要修改,滿足了開閉原則
改進(jìn)后的代碼