• CurrentAccounts.cs


    using System;
    using Wrox.ProCSharp;
    using Wrox.ProCSharp.VenusBank;
    using Wrox.ProCSharp.JupiterBank;

    namespace Wrox.ProCSharp
    {
       class MainEntryPoint
       {
          static void Main()
          {
            IBankAccount venusAccount = new SaverAccount();
                    ITransferBankAccount jupiterAccount = new CurrentAccount();
                    venusAccount.PayIn(200);
                    jupiterAccount.PayIn(500);
                    jupiterAccount.TransferTo(venusAccount, 100);
                    Console.WriteLine(venusAccount.ToString());
                    Console.WriteLine(jupiterAccount.ToString());
          }
       }
    }


    namespace Wrox.ProCSharp
    {
       public interface IBankAccount
       {
          void PayIn(decimal amount);
          bool Withdraw(decimal amount);
          decimal Balance
          {
             get;
          }
       }
        
        
         public interface ITransferBankAccount : IBankAccount
       {
          bool TransferTo(IBankAccount destination, decimal amount);
       }
    }

    namespace Wrox.ProCSharp.VenusBank
    {
       public class SaverAccount : IBankAccount
       {
          private decimal balance;
          public void PayIn(decimal amount)
          {
             balance += amount;
          }
          public bool Withdraw(decimal amount)
          {
             if (balance >= amount)
             {
                balance -= amount;
                return true;
             }
             Console.WriteLine("Withdrawal attempt failed.");
             return false;
          }
          public decimal Balance
          {
             get
             {
                return balance;
             }
          }
          public override string ToString()
          {
             return String.Format("Venus Bank Saver: Balance = {0,6:C}", balance);
          }
       }
    }



    namespace Wrox.ProCSharp.JupiterBank
    {
       public class CurrentAccount : ITransferBankAccount
    {
       private decimal balance;
       public void PayIn(decimal amount)
       {
          balance += amount;
       }
       public bool Withdraw(decimal amount)
       {
          if (balance >= amount)
          {
             balance -= amount;
             return true;
          }
          Console.WriteLine("Withdrawal attempt failed.");
          return false;
       }
       public decimal Balance
       {
          get
          {
             return balance;
          }
       }
       public bool TransferTo(IBankAccount destination, decimal amount)
       {
          bool result;
          if ((result = Withdraw(amount)) == true)
             destination.PayIn(amount);
          return result;
       }
       public override string ToString()
       {
          return String.Format("Jupiter Bank Current Account: Balance = {0,6:C}",
                                                                          balance);
       }   
     
    }


    }
  • 相关阅读:
    php 框架选择
    转:从框架看PHP的五种境界及各自的薪资待遇(仅限于二三线城市,一线除外)
    百度云怎样提升下载速度
    .net体系与java体系
    绘制3D的js库
    Canvas游戏计算机图形教程
    Unity Manual 用户手册
    在windows系统下安装oracle 11g
    Three.js学习笔记
    php面试题之二——数据结构和算法(高级部分)
  • 原文地址:https://www.cnblogs.com/shihao/p/2506354.html
Copyright © 2020-2023  润新知