界面以下:
剖析:
起首我们关于收钱写一个父类CashSuper。这个父类是用来包括其他的种种收费体式格局的:一般收费、七折优惠、八折优惠、九折优惠、满300减50、满400减70、满500减100等状况,个中折扣优惠虽然差别,然则范例相似,满减优惠同理,故此我们能够将一般收费、折扣优惠与满减优惠离别划分为三个差别的类:CashNormal、CashRebate、CashReturn。
而CashSuper这个父类是用于继续的,所以我们设置为abstract用来被重写的,其次这个父类所包括的的三个子类都邑配合挪用到一个参数:那就是实际须要收到的商品的价钱,所以我们的参数只须要传进来配合的参数:acceptMoney即可。
1 abstract class CashSuper2 {3 public abstract double acceptCash(double acceptMoney);4 }
然后就是一般收费:CashNormal
起首他从父类取得参数是实际须要收到的商品的价钱,他本身事一般收费没有任何的优惠,所以直接返回从父类传进来的值即可。
1 class CashNormal : CashSuper2 {3 public override double acceptCash(double acceptMoney)4 {5 return acceptMoney;6 }7 }
折扣优惠:CashRebate
他和一般收费相似,继续于父类CashSuper,会取得来自于父类的参数,获得实际须要收到的商品的价钱,然则他须要完成的是对商品举行打折优惠,所以他须要本身定义一个折扣优惠参数,如许他人挪用他的时刻将折扣参数传进来,他就能够经由过程对原价举行折扣优惠反馈给用户了。
1 class CashRebate : CashSuper 2 { 3 //这就是cashrebate的属性了 4 private double monRebate = 1; 5 6 //挪用CashRebate的时刻须要从表面将优惠水平传进来 7 public CashRebate(string moneyRebate) 8 { 9 this.monRebate = double.Parse(moneyRebate);10 }11 12 public override double acceptCash(double acceptMoney)13 {14 return acceptMoney * monRebate;15 }16 }
满减优惠:CashReturn
这个与折扣优惠相似了,只是他有两个参数罢了:满减的水平线,和减扣若干。故此给此类定义两个参数即可。
1 class CashReturn : CashSuper 2 { 3 //这就是cashreturn的属性了 4 private double CashLevel = 0; 5 private double MoneyReturn = 0; 6 7 //对外挪用函数所以必需是public 8 public CashReturn(string level,string MonReturn) 9 {10 this.CashLevel = double.Parse(level);11 this.MoneyReturn = double.Parse(MonReturn);12 }13 14 public override double acceptCash(double acceptMoney)15 {16 double result = acceptMoney;17 if (acceptMoney >= CashLevel)18 {19 result = acceptMoney - Math.Floor(acceptMoney / CashLevel) * MoneyReturn;20 }21 return result;22 }23 }
如今取得了几种优惠状况了,然则我们须要推断什么时刻须要挪用哪一种优惠状况,这点我们经由过程用户的挑选,用户将挑选的优惠体式格局传输过来,我们再肯定挪用哪一种优惠体式格局,这就是应用简朴工场形式,将一切的优惠体式格局封装好,在进一步挪用。
1 class CashFactory 2 { 3 //CashSuper如今就相似double之类,返回值就是CashSuper 4 public static CashSuper createCashAccept(string type) 5 { 6 CashSuper cs = null; 7 8 switch (type) 9 {10 case "一般收费":11 cs = new CashNormal();12 break;13 case "满300减50":14 cs = new CashReturn("300", "50");15 break;16 case "满500减100":17 cs = new CashReturn("500", "100");18 break;19 case "满400减70":20 cs = new CashReturn("400", "70");21 break;22 case "满900减200":23 cs = new CashReturn("900", "200");24 break;25 case "八折优惠":26 cs = new CashRebate("0.8");27 break;28 case "九折优惠":29 cs = new CashRebate("0.9");30 break;31 case "七折优惠":32 cs = new CashRebate("0.7");33 break;34 }35 return cs;36 }37 }
末了在用户接口挪用上面的函数即可。
1 private void ok_button_Click(object sender, EventArgs e) 2 { 3 /**对外这边须要相识两个函数 4 * 1.CashFactory.createCashAccept,这个是为了肯定每一次的购物时挪用的哪一种优惠体式格局 5 * 2.csuper.acceptCash,这个是为了取得每种优惠体式格局取得的优惠效果 6 */ 7 CashSuper csuper = CashFactory.createCashAccept(typecomboBox.SelectedItem.ToString()); 8 9 totalPrices = csuper.acceptCash(double.Parse(unitPrice_textBox.Text) * double.Parse(amount_textBox.Text));10 total += totalPrices;11 listBox1.Items.Add("单价:" + unitPrice_textBox.Text.ToString() + " 数目:" + amount.ToString() + " " + typecomboBox.SelectedItem.ToString() + " 算计:" + totalPrices.ToString());12 resultLabel.Text = total.ToString();13 }
以上就是C#简朴工场形式是什么?的细致内容,更多请关注ki4网别的相干文章!