設計模式1 簡單工廠模式

2021-10-23 18:19:45 字數 2463 閱讀 2019

(1)**規範性:命名規範、邏輯強(無明顯bug)、無冗餘判斷(eg:多個並列if用else if或switch case替代);

(2)物件導向:易維護、可復用、可擴充套件、靈活性好

(3)物件導向三大特性:封裝、繼承、多型,合理使用將顯著降低程式的耦合度;

(4)封裝:業務邏輯(eg:計算器的計算功能)和介面邏輯(eg:計算器的顯示)分開,從而降低耦合度,提公升復用性;

(5)鬆散耦合:基於繼承多型,採用不同的類單獨實現各模組,降低程式的維護風險;

(6)簡單工廠模式:定義單獨的工廠,解決各模組類的例項化問題。

(1)最初版本的計算器**,沒有考慮物件導向的程式設計思想

void widget::

cal(

)else}}

catch

(int i)

ui->outedit-

>

settext

(qstring::

number

(ans));

}

(2)復用,將介面邏輯層與業務邏輯層分開封裝,單獨實現計算類

//介面邏輯層

void widget::

cal(

) ans=oper.

getresult

(vara,varb,ui-

>symbolbox-

>

currentindex()

);}catch

(int i)

ui->outedit-

>

settext

(qstring::

number

(ans));

}//業務邏輯層

double operation::

getresult

(double numbera,

double numberb,

int flag)

return result;

}

(3)簡單工廠類,緊耦合 vs 松耦合,運用繼承和多型

//介面邏輯層

void widget::

cal(

) oper=operationfactory::

createoperator

(ui-

>symbolbox-

>

currentindex()

);oper-

>

setnumbera

(vara)

; oper-

>

setnumberb

(varb)

; ans=oper-

>

getresult()

;}catch

(int i)

ui->outedit-

>

settext

(qstring::

number

(ans));

}//業務邏輯層

class

operation

double

getnumberb()

void

setnumbera

(double var)

void

setnumberb

(double var)

virtual

double

getresult()

private

:double numbera;

double numberb;};

class

operationadd

:public operation

;class

operationsub

:public operation

;class

operationmul

:public operation

;class

operationdiv

:public operation

;//簡單工廠類

長期從事程式設計相關研究,涉及qt、機械臂、輪式機械人、四足機械人的建模及**,可共同**程式設計相關問題,可指導課程設計及畢業設計,詳詢:qq:

2963325158

設計模式 1 簡單工廠模式

簡單工廠模式屬於建立型的設計模式,其特點是使用乙個工廠生產所有的類物件,通過在工廠類中進行判斷,然後建立需要的功能類。優點 不必使用具體的功能類去建立該類的例項。缺點 新增乙個功能類就需要在工廠類中增加乙個判斷。此處利用 這4個operation來生成不同的operation物件來說明簡單工廠模式。...

設計模式 1 簡單工廠模式

總結簡單工廠設計模式就是為了能夠根據不同情況動態獲取到需要的型別 在本次將會演示乙個計算器的功能 我們無法知道使用者在程式中會輸入哪些字元,是 或者其他,但是我們能確定的是使用者需要通過輸入將兩個值進行運算,得到乙個返回結果。那麼在此處我們就可以建立乙個演算法基類,有設定值並計算後返回值的方法,值1...

設計模式(1) 簡單工廠模式

例項化物件的時候不再使用 new object 形式,可以根據使用者的選擇條件來例項化相關的類。對於客戶端來說,去除了具體的類的依賴。只需要給出具體例項的描述給工廠,工廠就會自動返回具體的例項物件。todo classname operation description 運算類 public cla...