工廠方法模式:定義一個用於創建對象的接口,讓子類決定實例化那一個類。工廠方法使一個類的實例化延遲到其子類。
簡單工廠模式(http://www.cnblogs.com/aehyok/archive/2013/05/10/3072008.html)的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態實例化相關的類,對於客戶端來說,去除了與具體產品的依賴。
工廠方法模式實現時,客戶端需要決定實例化那一個工廠來實現運算類,選擇判斷的問題還是存在的,也就是說,工廠方法把簡單工廠的內部邏輯判斷移動到了客戶端代碼來進行。你想要加功能,本來是改工廠類的(簡單工廠模式),而現在是修改客戶端。
如果想加一個功能,比如M的N次方,只需要增加此功能的運算類和相應的工廠類就可以了。
1.第一步寫好運算類:
NumberA { ; NumberB { ; result =
2.那麼接下來就需要實現加減乘除運算類
result = = .NumberA + result = = .NumberA - result = = .NumberA * result = (.NumberB == Exception(= .NumberA /
第三步寫好抽象工廠
工廠接口返回的就是運算類
第四步實現加減乘除抽象工廠
第五步進行調用一個加法的示例
Main( IFactory OperationFactory = ===
運行後結果為
工廠方法模式克服了簡單工廠違背開放-封閉原則的缺點,有保持了封裝對象創建過程的優點。工廠方法模式是簡單工廠模式的進一步抽象和推廣。由於使用了多態性,工廠方法模式保持了簡單工廠模式的優點,而且克服了它的缺點。但缺點是由於每加一個產品,就需要加一個產品工廠的類,增加了額外的開發量。當然還有更好的方案……
如果您對上節的簡單工廠模式還不太了解可以看一下http://www.cnblogs.com/aehyok/archive/2013/05/10/3072008.html