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

2021-10-09 11:49:53 字數 2090 閱讀 7463

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

乙個軟體實體(類、模組、方法等)應該對擴充套件新功能開放,對修改原有功能關閉。用抽象構建框架,用實現擴充套件細節。

當軟體需要新增乙個功能時,盡量在原有**基礎上進行擴充套件,而不是修改原有**。

以書店銷售書籍為例來說明什麼是開閉原則:

public

inte***ce

ibook

public

class

novelbook

implements

ibook

public

novelbook

(string name,

double price, string author)

@override

public string getname()

@override

public

double

getprice()

@override

public string getauthor()

}

public

class

bookstore

}

假如到了雙十一,要搞打折活動,40元以上書籍大九折,80元以上書籍打八折。需要修改程式適應需求的變化

違反開閉原則的方案

修改novelbook類,直接在getprice()方法中實現打折功能:

@override

public

double

getprice()

if(this

.price >40)

return

this

.price;

}

此方案雖完成了打折銷售的功能,卻失去了獲取原價的功能,若需要同時獲取原價和打折價該如何實現?

改進方案一

不修改現有**,在novelbook類中新增getdiscountprice()方法,實現獲取打折價功能:

public

class

novelbook

implements

ibook

public

novelbook

(string name,

double price, string author)

@override

public string getname()

@override

public

double

getprice()

@override

public string getauthor()

//獲取打折後**

public

double

getdiscountprice()

if(this

.price >40)

return

this

.price;

}}

public

class

bookstore

}

缺點:在類級別上違反了開閉原則

改進方案二

建立novelbook類的子類,在子類中新增getdiscountprice()方法 獲取打折後**:

public

class

discountnovelbook

extends

novelbook

@override

public

double

getdiscountprice()

if(price >40)

return price;

}}

public

class

bookstore

}

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

簡介 開閉原則是程式設計過程中最基礎 最重要的原則,前面講到的幾個原則,也都是為了實現開閉原則。那麼他是如何開放,又是如何關閉的呢?例項展示 這是乙個用於繪圖的類 使用方 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...

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

開閉原則 open close principle 簡稱ocp原則,指的是對擴充套件開放,對修改關閉.3.1 類圖 這裡主要就是通過graphic類可以作出不同的形狀,但是值得關注的是,這裡是通過控制abstractshape實現類的type屬性作出不同的形狀.當我們要擴充套件矩形時,雖然擴充套件開...