設計模式之三 工廠方法模式

2021-09-06 09:38:45 字數 1960 閱讀 5291

前言

工廠方法模式:定義乙個用於建立物件的介面,讓子類決定例項化那乙個類。工廠方法使乙個類的例項化延遲到其子類。

簡單工廠模式(的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴。

工廠方法模式實現時,客戶端需要決定例項化那乙個工廠來實現運算類,選擇判斷的問題還是存在的,也就是說,工廠方法把簡單工廠的內部邏輯判斷移動到了客戶端**來進行。你想要加功能,本來是改工廠類的(簡單工廠模式),而現在是修改客戶端。

工廠方法uml類圖

如果想加乙個功能,比如m的n次方,只需要增加此功能的運算類和相應的工廠類就可以了。

**實現

1.第一步寫好運算類:

///

operation運算類

public

class

operation

public

double numberb

public

virtual

double

getresult()

}

2.那麼接下來就需要實現加減乘除運算類

///

///加法運算類

/// public

class

operationadd : operation

}///減法運算類

public

class

operationsub : operation

}//////

乘法運算類

/// public

class

operationmul : operation

}//////

除法運算類

/// public

class

operationdiv : operation

result = this.numbera / this

.numberb;

return

result;}}

第三步寫好抽象工廠

///

抽象工廠 工廠介面

public

inte***ce

ifactory

工廠介面返回的就是運算類

第四步實現加減乘除抽象工廠

///

///加法工廠類

/// public

class

addfactory : ifactory

}//////

減法工廠類

/// public

class

subfactory : ifactory

}//////

乘法工廠類

/// public

class

mulfactory : ifactory

}//////

除法工廠類

/// public

class

divfactory : ifactory

}

第五步進行呼叫乙個加法的示例

class

program

}

執行後結果為

總結工廠方法模式克服了簡單工廠違背開放-封閉原則的缺點,有保持了封裝物件建立過程的優點。工廠方法模式是簡單工廠模式的進一步抽象和推廣。由於使用了多型性,工廠方法模式保持了簡單工廠模式的優點,而且克服了它的缺點。但缺點是由於每加乙個產品,就需要加乙個產品工廠的類,增加了額外的開發量。當然還有更好的方案……

如果您對上節的簡單工廠模式還不太了解可以看一下

設計模式之(三) 工廠方法模式

女媧補天的故事大家都聽過吧,這個故事是說,女媧在補了天後,下到凡間一看,哇塞,風景太優美了,天空是湛 藍的,水是清澈的,空氣是清新的,太美麗了,然後就待時間長了就有點寂寞了,沒有動物,這些看的到 都是靜態的東西呀,怎麼辦?別忘了是神仙呀,沒有辦不到的事情,於是女媧就架起了八卦爐 技術術語 建立工廠 ...

設計模式(三) 工廠方法模式

在設計模式 簡單工廠模式文章中介紹了簡單工廠模式,通過乙個例子講述了如何使用簡單工廠模式。同時也留下了乙個問題,那就是簡單工廠模式破壞了開放 封閉原則。那麼本文將介紹另外一種設計模式 工廠方法模式。主要介紹其概念 用途 實現方式 以及優缺點等。工廠方法模式 factory method patter...

設計模式(三) 工廠方法模式

工廠模式一般分為三種 簡單工廠,工廠方法,抽象工廠 簡單工廠 簡單工廠模式又叫靜態工廠方法模式,是通過專門定義乙個類負責建立其他類的例項,被建立的例項通常都具有共同的父類。簡單工廠將物件的建立過程進行了封裝,使用者不需要知道具體的建立過程,只需要呼叫工廠類獲取物件即可。工廠類的寫法是通過switch...