public void AskBuying() { Console.WriteLine("您好,请问您需要什么商品"); Console.WriteLine("我们有Acer,SamSung,Sauce,banana"); string strType = Console.ReadLine(); Console.WriteLine("请问您需要多少"); int count = Convert.ToInt32(Console.ReadLine()); //去仓库取货 ProductFather[] pros = wh.GetProducts(strType, count); //计算价格 double realMoney = GetMoney(pros); Console.WriteLine("请选择打折方式:1-----不打折 2-------打九折 3----------超过M元优惠n元"); string input = Console.ReadLine(); //通过简单工厂模式,根据用户输入获得一个打折对象 DiscountFather discount = GetDis(input); double realMoney1 = discount.GetTotalMoney(realMoney); //打印小票 Console.WriteLine("以下是您的购物信息"); foreach (ProductFather item in pros) { Console.WriteLine("商品名称:" + item.Name + " 商品价格:" + item.Price + "RMB 商品编号:" + item.ID); } Console.WriteLine("您总共购买了{0}元的商品,打折后应该支付{1}", realMoney, realMoney1); }
/// <summary> /// 和用户交互的过程 /// </summary> public void AskBuying() { Console.WriteLine("欢迎,你需要什么?"); Console.WriteLine("我们这里有Acer,SamSung,Napkin,Banana"); String strType = Console.ReadLine(); Console.WriteLine("你需要多少?"); int count = Convert.ToInt32(Console.ReadLine()); //去仓库取货 ProductFather[] pros = wh.OutputPros(strType, count); double realMoney = GetMoney(pros); Console.WriteLine("你总共需付{0}元钱", realMoney); Console.WriteLine("请选择你需要的打折方式:1.不打折,2.打九折,3.打85折,4.买300减50,5.买500减100 "); string input = Console.ReadLine(); //其实这就是简单工厂模式的实现,我们将打折方式抽象了一个父类,在实现GetDiscount()方法时就是 //使用的工程模式,获得了用户的打折方式; DiscountFather disocuntWay = GetDiscount(input); double totalMoney = disocuntWay.GetToalMoney(realMoney); Console.WriteLine("打完折后总计:{0}", totalMoney); Console.WriteLine("你的购物清单:"); foreach (var item in pros) { Console.WriteLine("种类:{0} 单价{1} 货物条形码{2}", item.Name, item.Price, item.ID); } Console.WriteLine("------------------------------------------------------------------------" + "\n" + "total:{0}", totalMoney); }
/// <summary> /// 采用简单工厂来计算折扣率 /// </summary> /// <param name="input">控制台输入的打折方式</param> /// <returns>返回应付现金</returns> public DiscountFather GetDis(string input) { DiscountFather dis = null; switch (input) { case "1": return(dis = new NoDiscount()); break; case "2": return(dis = new Discount2(0.9)); break; case "3": return(dis = new Discount3(500, 100)); break; } return(dis); }
/// <summary> /// 根据用户的输入选择一个打折方式 /// 这里使用的就是典型的--简单工厂模式 /// </summary> /// <param name="input">打折方式</param> /// <returns>f返回一个打折父类类型,但是装的一定是一个子类类型的对象</returns> public DiscountFather GetDiscount(string input) { DiscountFather discountWay = null;//注意这个DiscountFather是一个抽象类,不能实例化 switch (input) { case "1": discountWay = new DiscountNormal(); break; case "2": discountWay = new DiscountRate(0.9); break; case "3": discountWay = new DiscountRate(0.85); break; case "4": discountWay = new DiscountMForN(300, 50); break; case "5": discountWay = new DiscountMForN(500, 100); break; } return(discountWay); }