public void Transfer(IWithdrawalAndDepositAccount from, IDepositAccount to, decimal amount) { if (from.Amount < amount) { throw new InvalidOperationException(); } from.Withdraw(amount); to.Deposit(amount); }
public void WithdrawMoneyFrom(IWithdrawalAndDepositAccount account, decimal amount, IWithdrawalFeeCalculator withdrawalFeeCalculator) { var totalAmount = withdrawalFeeCalculator.CalculateAmountToWithdraw(amount); if (totalAmount > account.Amount) { Console.WriteLine("Insufficient funds."); return; } account.Withdraw(totalAmount); Console.WriteLine("{0}: {1}", account.GetType().Name, account.Amount); }