コード例 #1
0
 private void Notify(ContainableItem containableItem)
 {
     foreach (var dispenser in _dispensers)
     {
         dispenser.Dispense(containableItem);
     }
 }
コード例 #2
0
 public bool IsEnoughMoney(ContainableItem containableItem, decimal totalAmount)
 {
     if (containableItem.Product.Price <= totalAmount)
     {
         return(true);
     }
     return(false);
 }
コード例 #3
0
 public void Remove(ContainableItem containableItem)
 {
     if (_products.Count > 0)
     {
         _products.Remove(containableItem);
         _bandSize += containableItem.Size;
     }
     else
     {
         throw new BandIsEmptyException("remove");
     }
 }
コード例 #4
0
 public void Add(ContainableItem containableItem)
 {
     if (_bandSize > 0)
     {
         _products.Add(containableItem);
         _bandSize -= containableItem.Size;
     }
     else
     {
         throw new BandIsFullException();
     }
 }
コード例 #5
0
        public decimal Pay(IPayment payment, int numberOfMoney, string productName)
        {
            ContainableItem containableItem = ProductBand.Instance().GetByName(productName);
            if (_internalAccountant.IsEnoughMoney(containableItem,
                _internalAccountant.TotalAmount(payment, numberOfMoney)))
            {
                Notify(containableItem);

                return payment.GetChange();
                //if (payment is Coin)
                //{
                //    return _internalAccountant.CalculateChange(containableItem.Product.Price, payment, numberOfMoney);
                //}
                //if (payment is CreditCard)
                //{
                //    payment.Amount -= containableItem.Product.Price;
                //    return 0;
                //}
                //if (payment is Banknote)
                //    return 0;
            }
            throw new ArgumentException("You need to enter more money.");
        }
コード例 #6
0
        public void Dispense(ContainableItem containableItem)
        {
            ContainableItem product = ProductBand.Instance().GetByName(containableItem.Product.Name);

            ProductBand.Instance().Remove(product);
        }