# 背景
簡單工廠模式是很多程式設計師學習的第乙個設計模式,因為其不但原理簡單而且易於上手,在日常工作的**中也常有體現。今天分享乙個基於實現「加」、「減」、「乘」、「除」計算器的需求基於簡單工廠模式來實現。
# 錯誤示範
在學習簡單工廠模式之前,遇到這種需求我是這樣實現的:
publicstatic double calculator(double num1, double num2, string symbol) throws
exception
switch
(symbol)
result = num1 /num2;
break
;
default
:{} }
return
result;
}
簡單來說是船艦乙個方法,然後通過switch case 乙個乙個的去判斷,然後對比中的進行處理,後續如果有其他判斷的話,就繼續在下面在增加case判斷。那麼這段**實現了需求了,是實現了,但是這段**是優秀的嗎?不是。為什麼呢?例如現在客戶需求增加乙個平方演算法,我們在case中增加這個演算法,卻需要加減乘除的運算都得來參與編譯,在這個**的迭代過程中,如果不小心對原有**進行了誤操作,會造成很糟糕的結果,尤其是這個誤操作有可能還不會報錯……所以我們應該把加減乘除等運算進行分離,修改其中乙個不會影響另外的幾個,增加平方演算法也不影響其他**。
宣告父類
@datapublic
abstract
class
operation
建立多個計算類用於繼承父類並重寫getresult方法,這裡我分別建立了加減乘除四個類來繼承operation類,並重寫getresult()方法
class operationadd extendsoperation
}class operationsub extends
operation
}class operationmul extends
operation
}class operationdiv extends
operation
}
此時,我們只需要簡單的寫乙個工程方法就可以實現業務要求了。這裡只是例項**,很多細節判斷沒有加,如果是在生成環境中,首先入參肯定要校驗是否為null,如果為null會報npe,上面除法運算類中,應該對分母進行判斷,是否為0等等……
classoperationfactory
}return
operation;
}}
測試main方法
publicstatic
void
main(string args)
返回結果:
13.2
設計模式 簡單工廠模式(學習筆記)
簡單工廠事實上不是乙個設計模式,比較像一種程式設計習慣!首先看一下 從 中理解這個程式設計習慣。舉個做披薩的樣例 pizza類 public inte ce pizza詳細的披薩cheesepizza public class cheesepizza implements pizza overrid...
設計模式 學習筆記 簡單工廠模式
從接觸程式設計到現在已經很久了,從最早的面向過程到物件導向,後來演算法的學習,但是一直沒有接觸設計模式。前幾周,我申請的 大話設計模式 採購下來了,剛好藉著這個讀書的機會,把自己的學習筆記記錄下來,希望以後自己寫專案的時候可以應用到這些模式思想。1 運算的基類,所有的運算都必須繼承自這個類 基類,所...
設計模式學習筆記之簡單工廠模式
所謂簡單工廠模式,即提供建立物件的介面,而具體建立什麼物件,由客戶端決定。比如,我們有ibird這樣乙個抽象類,有chicken和duck這兩個類實現ibird。那麼,如果我們想靈活的建立chicken或ibird,那麼就需要用到簡單工廠模式。factory根據接收到的字串,決定返回的物件。客戶端用...