コード例 #1
0
ファイル: Customer.cs プロジェクト: ywscr/StrategyPattern
        public void Buy(decimal originPriceM)
        {
            _vipAlgorithm = VipAlgorithmFactory.GetVipAlgorithm(this, out this._vip);
            var originPrice = (int)originPriceM * 100;
            var finalPrice  = _vipAlgorithm.CalcPrice(originPrice);

            //
            Console.WriteLine($"您在本店历史消费总额:{_totalAmount * 0.01}元");
            var vipMsg = _vip.HasValue ? $"您是本店会员:{_vip.Value.ToString()}" : "您未升级为本店会员";

            Console.WriteLine(vipMsg);
            Console.WriteLine($"本次购买商品原价{originPrice * 0.01}元,需支付{finalPrice * 0.01}元");
            _totalAmount += originPrice;
            Console.WriteLine();
        }
コード例 #2
0
        public static IVipAlgorithm GetVipAlgorithm(Customer cust, out Vip?vipLevel)
        {
            var custVip = VipConfig.Instance.VipCondition.Where(x => x.Value <= cust._totalAmount)
                          .OrderByDescending(x => x.Value)
                          .ToList();
            IVipAlgorithm vipAlgorithm = null;

            if (custVip.Count == 0)
            {
                vipLevel     = null;
                vipAlgorithm = new VipNone();
            }
            else
            {
                vipLevel     = custVip.First().Key;
                vipAlgorithm = VipConfig.Instance.VipAlgorithm[vipLevel.Value];
            }
            return(vipAlgorithm);
        }