設計模式 (六)設計模式原則

2021-10-07 11:12:26 字數 1750 閱讀 4364

1)開閉原則(ocp)是程式設計中最基礎也是最重要的設計原則

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

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

4)程式設計中使用其他原則,以及設計模式的目的就是遵循開閉原則。

假設我們需要實現這樣的乙個應用:需要客戶端選擇的幾何圖形種類來畫出相應的圖形。

現在程式提供了畫出矩形和圓形的兩種功能,假設我們還需要新增乙個畫出三角形的功能,**如下

public

static

void

main

(string[

] args)

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

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

}

注釋掉的**即我們在增加畫三角形這一功能時需要增加的**。

雖然這個**比較好懂,但是會出現這樣的問題:使用端需要使用**的時候竟然需要親自增加一段條件判斷,很顯然這種設計是違反ocp原則的。這樣需要修改的**實在是有點多。

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()

}//新增乙個圖形

class

othergraphic

extends

shape

@override

public

void

draw()

}

我們採用這種繼承的方法,就無需讓使用端來乙個個判斷應當執行的操作,而是採用這種直接的方式,根據傳入的物件型別來執行各自的方法。

設計模式之六原則

單一職責 例子 iphone介面中有三個方法 dial 撥號 chat 通話 hangup 結束通話 由於撥號 和 結束通話 是屬於協議,而通話屬於業務,所以對介面進行拆分 iconnector介面 dial 撥號 hangup 結束通話 idatatransfer介面 chat 通話 總結 對介面...

設計模式 設計模式原則

1 單一職責原則 srp 乙個類應當只有乙個引起其變化的原因。使用單一職責原則的好處有 1 類的複雜性降低 2 可讀性提高 3 可維護性提高 4 變更引起的風險降低 2 黎克特制替換原則 lsp 在使用父類的地方,可以使用其子類替換。黎克特制替換原則的含義 1 子類必須完全實現父類的方法 2 子類可...

設計模式 六大設計原則

剛剛結束設計模式學習時,感覺哪哪的抓不住重點,雖然之前師傅給勾了寫比較重要的設計模式,但是給我的感覺設計模式怎麼全都乙個樣子。通過對一些文章的瀏覽,簡單的對設計原則總結了一下。設計模式,就是設計範例。是經典問題的解決方案,是可以讓學習者舉一反三的,有研究價值 有交流價值的例子。設計模式的本質是物件導...