開閉原則,是程式設計中最基礎、最重要的設計原則。
乙個軟體實體如類,模組和函式應對外擴充套件開放(對提供方),對修改關閉(對使用方)。用抽象構建框架,用實現擴充套件細節。
當軟體需要變化時,盡量通過擴充套件軟體實體的行為來實現變化,而不是通過修改已有的**來實現變化。
說白了就是增加了新功能,盡量保證以前的使用方**不做更改
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...