設計模式七大原則之開放封閉原則

2021-10-06 05:20:54 字數 1522 閱讀 2334

基本介紹

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...