基本介紹
1)開閉原則(open closed principle)是程式設計中最基礎、最重要的設計原則
2)乙個軟體實體如類,模組和函式應該對擴充套件開放(對提供方),對修改關閉(對使用方)。用抽象構建框架,用實現擴充套件細節。
3)當軟體需要變化時,盡量通過擴充套件軟體實體的行為來實現變化,而不是通過修改已有的**來實現變化。
4)程式設計中遵循其它原則,以及使用設計模式的目的就是遵循開閉原則。
先來一段**,大家看看有什麼問題
package cn.chmcyz.openclose;
/** * @author 諶渙謀
* @date 2020/5/16 - 17:24
*/public class openclosedemp
}//這是乙個用於繪圖的類 [使用方]
class graphiceditor
//繪製矩形
public void drawrectangle(shape r)
//繪製圓形
public void drawcircle(shape r)
//繪製三角形
public void draw********(shape r)
}//shape 類,基類
class shape
class rectangle extends shape
}class circle extends shape
}//新增畫三角形
class ******** extends shape
}
上面**存在的問題:
1)違反了設計模式的 ocp 原則,即對擴充套件開放(提供方),對修改關閉(使用方)。即當我們給類增加新功能的時候,盡量不修改**,或者盡可能少修改**.
2)比如我們這時要新增加乙個圖形種類 三角形,我們需要做修改,修改的地方較多
解決方案
把建立 shape 類做成介面,並提供乙個抽象的 draw 方法,讓具體的類去實現即可,這樣我們有新的圖形種類時,只需要讓新的圖形類,**如下
package cn.chmcyz.openclose.improve;
/** * @author 諶渙謀
* @date 2020/5/16 - 17:27
*/public class opencloseimprove
}//這是乙個用於繪圖的類 [使用方]
class graphiceditor
}//shape 介面
inte***ce shape
class rectangle implements shape
}class circle implements shape
}//新增畫三角形
class ******** implements shape
}
設計模式之七大原則
學習了這麼長時間的設計模式,我們知道了設計模式是一套被反覆使用 多數人知曉的 經過分類的 設計經驗的總結。使用設計模式是為了 可重用性 讓 更容易被他人理解 保證 可靠性。俗話說 國有國法,家有家規,那在使用設計模式時都需要遵循什麼原則呢?就乙個類而言,應該僅有乙個引起它變化的原因 why如果乙個類...
設計模式之七大原則
對類來說,即乙個類應該只負責乙個職責,如類a負責兩個不同的職責 職責1,職責2 當職責1發生需求變更而改變a時,可能造成職責2執行錯誤,所以需要將類a的粒度分解為a1,a2 com.witty.designpattern.princple.singleresponsibility包 com.witt...
設計模式七大原則之開閉原則
簡介 開閉原則是程式設計過程中最基礎 最重要的原則,前面講到的幾個原則,也都是為了實現開閉原則。那麼他是如何開放,又是如何關閉的呢?例項展示 這是乙個用於繪圖的類 使用方 class graphiceditor else if shape.my type 2 else if shape.my typ...