還記得剛入門c語言的時候經常要寫一些加加減減的程式來練練手。好吧,既然學了新語言,那就用新語言來寫個簡單的計算器吧!
public
class calculator }}
好吧,寫到這裡,相信大家都會覺得好low…,確實是這樣。程式只是簡單實現了加減乘除,卻沒有體現物件導向的思想,也沒有任何的擴充套件性。那麼,我們就引入乙個新的設計模式——工廠模式。工廠模式的好處在於能夠負責實現建立所有例項的內部邏輯,給程式帶來更大的可擴充套件性和盡量少的修改量。那麼且看工廠模式是如何實現上述的計算器的。
我們可以先看看簡單工廠模式的uml圖:
圖中角色主要分為以下三類:
簡單工廠類:這是簡單工廠模式的核心,由它負責建立所有的類的內部邏輯。當然工廠類必須能夠被外界呼叫,建立所需要的產品物件。
抽象產品(運算類):簡單工廠模式所建立的所有物件的父類。
具體產品(加減法類):簡單工廠所建立的具體例項物件,這些具體的產品往往都擁有共同的父類。
先來看乙個運算類:
public
abstract
class
operation
class
addoperation
extends
operation
}class
suboperation
extends
operation
}class
muloperation
extends
operation
}class
divoperation
extends
operation
return numbera / numberb;}}
有了運算子類了,那麼也要有乙個生產運算子的工廠吧:
public
class operationfactory
return op;}}
再寫乙個計算器測試類:
public
class calculator catch (arithmeticexception e) }}
看,乙個簡單的工廠模式就出現了。它實現了整個計算器程式的邏輯和業務上的分離。在工廠方法模式中,工廠方法用來建立各種運算子,同時還向客戶端隱藏了哪種具體產品類將被例項化這一細節。而且工廠模式有良好的擴充套件性比如,現在我們需要再新增一種運算方式,「兩個數的平方和」,那麼我們只需在新增乙個具體的運算類,並在運算子工廠中新增多乙個case便可實現:
class
squareoperation
extends
operation
}
當然,簡單工廠模式也有其缺點。我們將其優點和缺點列舉如下:
優點:
1、使用者想建立乙個物件,只要知道其名稱就可以從工廠中獲取物件。
2、擴充套件性高,如果想增加乙個產品,只要擴充套件乙個具體產品類就可以。
3、遮蔽產品的具體實現,使用者只關心產品的介面。
缺點:
每次增加乙個產品時,都需要增加乙個具體類和物件實現工廠,使得程式中出現大量的類,在一定程度上增加系統的複雜度。
簡單加減乘除
問題描述 從鍵盤輸入兩個實數到變數a和b中,然後輸入乙個數字代表進行的運算,該數字為1則代表對a和b做加法,2代表減法,3代表乘法,4代表除法。如果輸入1 3 4,表示進行1 3的操作,結果為0.333333。輸出時,保留兩位小數,因此輸出0.33。注 可直接使用printf的控制格式實現保留兩位小...
7 簡單加減乘除
7 簡單加減乘除 問題描述 從鍵盤輸入兩個實數到變數a和b中,然後輸入乙個數字代表進行的運算,該數字為1則代表對a和b做加法,2代表減法,3代表乘法,4代表除法。如果輸入1 3 4,表示進行1 3的操作,結果為0.333333。輸出時,保留兩位小數,因此輸出0.33。注 可直接使用printf的控制...
中加減乘除 晉朝成語 加減乘除
讀 音 ji ji n ch ng ch 釋 義 算術的四則運算,借指事物的消長變化。出 自 明 王九思 端正好 次韻贈邵晉夫歸隱 端的是太平人物,誰想道命兒中加減乘除。例句1.他們的第一台機器可以加減乘除。2.通過教她不同的錢的面額幫你的孩子學會加減乘除。3.阿拉巴馬州和密西西比州有差不多一半的孩...