《大话设计模式》简单工厂模式— —商场促销系统实例

阅读: 评论:0

《大话设计模式》简单工厂模式— —商场促销系统实例

《大话设计模式》简单工厂模式— —商场促销系统实例

商场收银软件

如下面这样一个收银界面,如果再加上打折、或者满减、等活动,首先用用简单工厂实现。
现金收费抽象类:

abstract class CashSuper
{public abstract double acceptCash(double money);
}

正常收费子类:

class CashNormal:CashSuper()
{public override double acceptCash(double money){return money;}
}

打折收费子类:

class CashRebate:CashSuper
{private double moneyRebate = id;public CashRebate(string moneyRebate){Rebate = double.Parse(moneyRebate);}public override double acceptCash(double money){return money * moneyRebate;}
}

返利收费子类:

class Cashreturn:cashSuper
{private double moneyCondition = 0.0d;private double moneyReturn = 0.0d;public CashReturn(string moneyCondition,string moneyReturn){Condition = double.Parse(moneyCondition);Return = double.Parse(moneyReturn);}public override double acceptCash(double money){double return = money;if(money >= moneyCondition)result = money - Math.Floor(money / moneyCondition) * moneyReturn;return result;}
}

现金收费工厂:

class CashFactory
{public static CashSuper createCashAccept(string type){CashSuper cs = null;swith(type){case "正常收费":cs = new CashNormal();break;case "满300返100":CashReturn cr1 = new CashReturn("300","100");cs = cr1;break;case "打8折":CashRebate cr2 = new CashReturn("0.8");cs = cr1;break;}return cs;}
}

客户端主程序(主要部分):

double total = 0.0d;
private void btn0k_Click(object sender,EventArgs e)
{CashSuper csuper = ateCashAccept(cbxType,SelectedItem.ToString());double totalPrices = 0d;totalPrices = csuper.acceptCash(Convert.ToDouble(txtPrice,Text) * Convert.ToDouble(txtNum.Text));total = total + totalPrices;lbxList.Item.Add("单价:" + textPrice.Text + "数量:" + txtNum.Text + " "+ cbxType.SelectedItem + "合计:" + totalPrice,ToStirng());lblResult.Text = total.ToString();
}
面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,是具有相同属性和功能的对象的抽象集合才是类。

但是这样的写法有没有局限呢?如果再加上另一种促销手段呢,比如,需要满100积分10点,以后要领取奖品又该如何呢?每次维护和扩展收费方式都要改动这个工厂,以致代码需要重新编译部署……所以接下来我会继续完善用策略方法的编写模式。

本文发布于:2024-02-02 04:54:34,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170682087541488.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模式   大话   实例   商场   工厂
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23