W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
商場(chǎng)收銀系統(tǒng)v1.1關(guān)鍵代碼如下:
double total = 0.0d; private void btnOk_Click(object sender, EventArgs e){ double totalPrices = 0d; //cbxType是一個(gè)下拉選擇框,分別有“正常收費(fèi)”、“打8折”、“打7折”和“打5折” switch(cbxType.SelectedIndex){ case 0: totalPrices = Convert.ToDouble(txtPrice.Text) * Convert.ToDouble(txtNum.Text); break; case 1: totalPrices = Convert.ToDouble(txtPrice.Text) * Convert.ToDouble(txtNum.Text) * 0.8; break; case 2: totalPrices = Convert.ToDouble(txtPrice.Text) * Convert.ToDouble(txtNum.Text) * 0.7; break; case 3: totalPrices = Convert.ToDouble(txtPrice.Text) * Convert.ToDouble(txtNum.Text) * 0.5; break; } total = total + totalPrices; lbxList.Items.Add("單價(jià):" + txtPrice.Text + "數(shù)量:" + txtNum.Text + cbxType.SelectedItem + "合計(jì):" + totalPrices.ToString()); lblResult.Text = total.ToString(); }
“這下可以了吧,只要我事先把商場(chǎng)可能的打折都做成下拉選擇框的項(xiàng),要變化的可能性就小多了。”小菜說(shuō)道。
“這比剛才靈活性上是好多了,不過重復(fù)代碼很多,像Convert.ToDouble(),你這里就寫了8遍,而且4個(gè)分支要執(zhí)行的語(yǔ)句除了打折多少以外幾乎沒什么不同,應(yīng)該考慮重構(gòu)一下。不過還不是最主要的,現(xiàn)在我的需求又來(lái)了,商場(chǎng)的活動(dòng)加大,需要有滿300返100的促銷算法,你說(shuō)怎么辦?”
“滿300返100,那要是700就要返200了?這個(gè)必須要寫函數(shù)了吧?”
“小菜呀,看來(lái)之前教你的白教了,這里面看不出什么名堂嗎?”
“哦!我想起來(lái)了,你的意思是簡(jiǎn)單工廠模式是吧,對(duì)的對(duì)的,我可以先寫一個(gè)父類,再繼承它實(shí)現(xiàn)多個(gè)打折和返利的子類,利用多態(tài),完成這個(gè)代碼?!?/p>
“你打算寫幾個(gè)子類?”
“根據(jù)需求呀,比如8折、7折、5折、滿300送100、滿200送50……要幾個(gè)寫幾個(gè)?!?br />
“小菜又不動(dòng)腦子了,有必要這樣嗎?如果我現(xiàn)在要3折,我要滿300送80,你難道再去加子類?你不想想看,這當(dāng)中哪些是相同的,哪些是不同的?”
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: