最近開始琢磨設計模式,我發現在類設計和代碼重構過程中,設計模式的使用是不可或缺的。不僅如此,在閱讀他人代碼時候,掌握設計模式可以在提高研讀效率方面,起到事半功倍的作用——你對代碼的分析單位會從語句上升到整個類,這個類掃一眼 ,就能知道是干嘛的了,很讓人艷羨的技能!!
我選用的資料是《大話設計模式》這本書,原因很簡單——大伙兒都說這書講的很有依稀,我覺得王小波曾經說過一句話很有道理:有些書,有趣是他應具備的特點。多少人翻開計算機專業書籍時候一臉無奈,人生已經如此的艱難,一個能寫出有意思文章的作者更顯得彌足珍貴——就比如說我!
《大話設計模式》這本書的源代碼是用C#寫的,我將其用java語言重新實現,希望能夠加深自己的理解,因為讀書是個循序漸進的過程,所以設計模式系列文章會隨著進度的加深而不斷更新。
1.什么是工廠設計模式
言歸正傳,簡單工廠模式是《大話設計模式》在頭一章節第一個介紹的設計模式,顧名思義,工廠是用來生產東西的,而且是用來生產指定東西的。在代碼中,該模式主要是被用來生成對象。說的再直白,是通過一個工廠類,根據傳入參數,生成指定子類對象的一種方法。舉個例子,有個叫做富土康的組裝工廠,你跟他說,我要一個結實的手機,他會給你生產一個諾基亞,你對他說,我要一個給人溫暖的手機,他會給你生產一個小米,如果你對他說,請給我生產一個大眾化的手機,他會給你一部蘋果。無論蘋果,小米還是諾基亞,他們都是手機的子類,根據用戶傳入參數的不同,工廠類返回不同的子類對象。
2..工廠設計模式的實現:
《大話設計模式》中的例子是這樣的:用java實現一個四則混合運算程序,用戶輸入兩個數和一個運算符,程序給出運算結果。如果你是個java初級工程師,你按照如下邏輯實現:
1)輸入第一個數;
2)輸入第二個數;
3)輸入運算符(+-*/)
4)根據運算符對兩個數進行求值運算。
以上四個步驟全部寫到一個類里面,native,少年,我們用工廠設計模式玩兒點兒花活兒。
首先,無論加、減、乘、除都是一種運算,我們提取該特點進行抽象封裝,建立Operation父接口,然后在建立加、減、乘、除四個子類。代碼如下:
他的四個子類代碼:
接下來,就是編寫我們的工廠類,代碼如下:
這里應該很清楚了,根據傳入的云算法,返回相應的加減乘除子類對象。然后在調用子類的getResult方法,就可以獲得運算結果了。
主函數代碼在這里:
這么多代碼如果你看著費勁的話,下面這張我從《大話設計模式》中截下來的圖可以加深你的理解:
3.為什么要有簡單工廠設計模式。
和我們最常用的Object A = new Objext()構造對象的方法相比,簡單工廠設計模式最大的特點就是將對象的生成過程從用戶手中隔離開來,在用戶在對A對象的生成過程進行更改的時候,我們不必修改項目中所有的Object A = new Objext()語句,我們只要到工廠類中進行修改就可以了。
|
新聞熱點
疑難解答