C#简易商城收银系统v1.1简单工厂实现(2-2)
Posted zaohuojian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#简易商城收银系统v1.1简单工厂实现(2-2)相关的知识,希望对你有一定的参考价值。
C#简易商城收银系统v1.1简单工厂实现(2-2)
- 当初:
- C#简易商城收银系统v1.0
- 现在:
- 用之前的工厂模式对商城收银系统v1.0进行升级
可以参考之前的 C#简易商城收银系统v1.0 随笔
添加CashSuper类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 商城收银软件 abstract class CashSuper //现金收费抽象类 public abstract double acceptCash(double money); //现金收取的抽象方法.参数为原价,返回当前价格
添加CasHNormal类,并引用CashSuper类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 商城收银软件 class CasHNormal : CashSuper //正常收费类 public override double acceptCash(double money) return money; //正常收费,原价返回
添加CashRebate类,并引用CashSuper类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 商城收银软件 class CashRebate : CashSuper//打折收费类 private double moneyRebate = 1d; public CashRebate(string moneyRebate) //打折收费初始化 //必须输入折扣率,如8折 this.moneyRebate = double.Parse(moneyRebate); public override double acceptCash(double money) return money * moneyRebate;
添加CashRrturn类,并引用CashSuper类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 商城收银软件 class CashReturn : CashSuper //返利收费子类 private double moneyCondition = 0.0d; private double moneyReturn = 0.0d; public CashReturn(string moneyCondition,string moneyReturn) this.moneyCondition = double.Parse(moneyCondition); this.moneyReturn = double.Parse(moneyReturn); public override double acceptCash(double money) double result = money; if (money>=moneyCondition)//若大于返利,就减去返利值 result = money - Math.Floor(money / moneyCondition) * moneyReturn; return result;
添加CashFactory类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 商城收银软件 class CashFactory //现金收费工厂类 public static CashSuper createCashAccept(string type) CashSuper cs = null; switch (type) case "正常收费": cs = new CasHNormal(); break; case "满300返100": cs = new CashReturn("300","100"); break; case "打八折": cs = new CashRebate("0.8"); break; return cs
客户端主要类
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace 商城收银软件 public partial class Form1 : Form //客户端类 public Form1() InitializeComponent(); double total = 0.0d;//声明一个double变量,用total来计算总计 private void button1_Click(object sender, EventArgs e) CashSuper csuper = CashFactory.createCashAccept(cbxType.SelectedItem.ToString()); double totalPrices = 0d; totalPrices = csuper.acceptCash(Convert.ToDouble(txtPrice.Text)*Convert.ToDouble(txtNum.Text)); total = total + totalPrices; lbxList.Text = "单价:" + txtPrice.Text + "数量:" + txtNum.Text + " " + cbxType.SelectedItem + "合计:" + totalPrices.ToString(); lblResult.Text = total.ToString(); private void Form1_Load(object sender, EventArgs e) cbxType.Items.AddRange(new object[] "正常收费", "打8折", "满300返100"); cbxType.SelectedIndex = 0;
总结 面向对象简单工厂实例
添加多个不同商品折扣类型
定义工厂类
客户端实例化出来
多看 多敲 慢慢的就可以领悟其中的设计模式
以上是关于C#简易商城收银系统v1.1简单工厂实现(2-2)的主要内容,如果未能解决你的问题,请参考以下文章