三、注意事項和細節參考
我們來用乙個畫圖的功能來說明。
類圖:
說明:shape類
是所有圖形類的基類;graphiceditor類
接收shape
物件並根據其引數type
判斷畫出什麼圖形。
我們在實現這個畫圖功能後,還要新增乙個三角形的畫法。
// 圖形基類
class
shape
// 繼承shape的矩形類
class
rectangle
extends
shape
}// 繼承shape的圓形類
class
circle
extends
shape
}// 新增三角形類,繼承shape類
class
********
extends
shape
}// 繪圖類
class
graphiceditor
private
void
drawrectangle()
private
void
drawcircle()
// 新增繪製三角形方法
private
void
draw********()
}public
class
ocp}
此種實現方式的優缺點
我們可以對方式一中的內容進行改進:把shape
類修改為抽象類,提供乙個抽象的draw()
方法,並讓其子類進行實現。
這樣當我們需要新增圖形時,只需讓新的圖形類繼承shape
類並實現draw()
方法即可,而無需修改繪圖類。
// 圖形基類,抽象類
abstract
class
shape
// 矩形類
class
rectangle
extends
shape
}// 圓形類
class
circle
extends
shape
}// 三角形類
class
********
extends
shape
}// 繪圖類
class
graphiceditor
}public
class
ocp}
開閉原則想表達的另一層意思 :用抽象構建框架,用實現擴充套件細節。因為抽象靈活性非常好,適應性廣,使用得當就可以保持軟體架構的穩定;而軟體中易變的細節,可以用從抽象類派生的實現類進行擴充套件,當需求發生變化時,只需重新派生乙個實現類進行拓展就行了。 設計模式 七大原則 開閉原則
開閉原則,是程式設計中最基礎 最重要的設計原則。乙個軟體實體如類,模組和函式應對外擴充套件開放 對提供方 對修改關閉 對使用方 用抽象構建框架,用實現擴充套件細節。當軟體需要變化時,盡量通過擴充套件軟體實體的行為來實現變化,而不是通過修改已有的 來實現變化。說白了就是增加了新功能,盡量保證以前的使用...
七大原則 開閉原則
開閉原則 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...