設計模式 七大原則 開閉原則

2021-10-06 18:35:15 字數 1586 閱讀 8934

開閉原則,是程式設計中最基礎、最重要的設計原則。

乙個軟體實體如類,模組和函式應對外擴充套件開放(對提供方),對修改關閉(對使用方)。用抽象構建框架,用實現擴充套件細節。

當軟體需要變化時,盡量通過擴充套件軟體實體的行為來實現變化,而不是通過修改已有的**來實現變化。

說白了就是增加了新功能,盡量保證以前的使用方**不做更改

public

class

ocp}

/** * 這是乙個用於繪圖的類 [使用方]

*/class

graphiceditor

*/public

void

drawshape

(shape shape)

else

if(shape.m_type ==2)

}private

void

drawrectangle

(shape shape)

private

void

drawcircle

(shape shape)

}/**

* shape類 基類

*/class

shape

/** * 矩形類

*/class

rectangle

extends

shape

}/**

* 圓形類

*/class

circle

extends

shape

}

優點是好理解,簡單易操作。

缺點是違反了設計模式的ocp原則,即對擴充套件開放(提供方),對修改關閉(對使用方)。即當我們給類增加新功能的時候,盡量不修改**或者少修改**。

比如我們要給上面增加乙個圖形種類(三角形),我們需要再使用方增加一些**

把建立shape類做成抽象類,並提供乙個draw的方法,讓子類去實現方法即可,這樣我們有新的圖形類的時候,只需要讓圖形類繼承shape,並實現draw方法即可,使用方的**並不需要修改,這樣就滿足了開閉原則。

* 按照開閉原則 優化**

*/public class ocp

}/**

* 繪圖的類,使用方

*/class graphiceditor

}/**

* shape,所有圖形的基類

*/abstract class shape

/** * 矩形類

*/class rectangle extends shape

@override

public void draw()

}/**

* 圓形類

*/class circle extends shape

@override

public void draw()

}class ******** extends shape

@override

public void draw()

}

上面的**就算是增加了圖形類,但是使用方graphiceditor的**是不需要進行更改的

七大原則 開閉原則

開閉原則 open closed principle,ocp 由勃蘭特 梅耶 bertrand meyer 提出,他在 1988 年的著作 物件導向軟體構造 object oriented software construction 中提出 軟體實體應當對擴充套件開放,對修改關閉 software ...

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

簡介 開閉原則是程式設計過程中最基礎 最重要的原則,前面講到的幾個原則,也都是為了實現開閉原則。那麼他是如何開放,又是如何關閉的呢?例項展示 這是乙個用於繪圖的類 使用方 class graphiceditor else if shape.my type 2 else if shape.my typ...

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

主要內容 提供方 擴充套件開放,使用方 修改關閉 盡量通過擴充套件實現變化,而不是修改,避免對原來的系統造成威脅 例子class graphiceditor else if s.m type 2 public void drawrectangle shape r public void drawci...