文档介绍:该【设计模式教学课件(与“策略”有关文档共55张) 】是由【胜利的果实】上传分享,文档一共【55】页,该文档可以免费在线阅读,需要了解更多关于【设计模式教学课件(与“策略”有关文档共55张) 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。
做一个商场收银软件,营业员根据客户购买商品单价和数量,向客户收费。
第1页,共55页。
关键代码
double total = ;private void btnOk_Click(object sender, EventArgs e)   {    double totalPrices=() * (); 
 total = total + totalPrices;       (“单价:”++“ 数量:”++“ 合计:”+());        = ();        }
无法满足打折,满300送300等促销措施!!!
第2页,共55页。
报价管理
在一些CRM(客户关系管理)系统中,会有一个单独的报价管理模块,处理复杂的报价功能
普通客户:全价
老客户:根据年限,给予折扣
大客户:根据累计消费,给予折扣
客户购买量:对于新老客户都适用
报价人员职位高低:
如何实现????
第3页,共55页。
类的划分原则
面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。
第4页,共55页。
第5页,共55页。
//现金收取父类 
 abstract class CashSuper    {        //抽象方法:收取现金,参数为原价,返回为当前价        public abstract double acceptCash(double money);    }    
//正常收费,继承CashSuper    
class CashNormal : CashSuper    {        public override double acceptCash(double money)        {            return money;        }    }
第6页,共55页。
//打折收费,继承CashSuper    
class CashRebate : CashSuper    {        private double moneyRebate = 1;        //初始化时,必需要输入折扣率,如八折,        public CashRebate(string moneyRebate)        {           = (moneyRebate);        }        public override double acceptCash(double money)        {            return money * moneyRebate;        }    }
第7页,共55页。
//返利收费,继承CashSuper    class CashReturn : CashSuper    {        private double moneyCondition = ;        private double moneyReturn = ;        public CashReturn(string moneyCondition, string moneyReturn)        {         = (moneyCondition);         = (moneyReturn);        }        public override double acceptCash(double money)        {            double result = money;            if (money >= moneyCondition)
result = money-(money / moneyCondition) * moneyReturn;            return result;        }    }
第8页,共55页。
//现金收取工厂    
class CashFactory    {        //根据条件返回相应的对象        public static CashSuper createCashAccept(string type)        {            CashSuper cs = null;            switch (type)            {                case "正常收费":                    cs = new CashNormal();                    break;                case "满300返100":                    CashReturn cr1 = new CashReturn("300", "100");                    cs = cr1;                    break;                case "打8折":                    CashRebate cr2 = new CashRebate("");                    cs = cr2;                    break;            }            return cs;        }    }
第9页,共55页。
//客户端窗体程序(主要部分)    CashSuper csuper;//声明一个父类对象    double total = ;    private void btnOk_Click(object sender, EventArgs e)    {
        csuper = (());  
      
double totalPrices=0;
        totalPrices = (() * 
());
        total = total + totalPrices;
        ("单价:" +  + " 数量:" +  + " "++ " 合计:" + ());
         = ();    }
第10页,共55页。