Example #1
0
        static void Main(string[] args)
        {
            Context context = null;

            Console.WriteLine("請輸入金額");
            string strCash = Console.ReadLine();

            Console.WriteLine("請輸入打折方式 1.正常 2.300折100 3.打8折");
            CashEnum Mode = (CashEnum)Enum.Parse(typeof(CashEnum), Console.ReadLine());

            context = new Context(Mode);
            //switch (strMode)
            //{
            //    case CashEnum.normal:
            //        context = new Context(new CashNormal());
            //        break;
            //    case CashEnum.refund:
            //        context = new Context(new CashReturn("300", "100"));
            //        break;
            //    case CashEnum.discount:
            //        context = new Context(new CashDiscount("0.8"));
            //        break;
            //    default:
            //        break;
            //}

            //PayCash payCash = CashFactory.createCashAccept((CashEnum)Enum.Parse(typeof(CashEnum),Console.ReadLine()));
            double totalPrices = 0d;

            totalPrices = context.AcceptCash(Convert.ToDouble(strCash));
            Console.WriteLine(totalPrices);
            Console.ReadLine();
        }
        public CashContext(CashEnum cashEnum)
        {
            switch (cashEnum)
            {
            case CashEnum.Normal:
                this._cash = new CashNormal();
                break;

            case CashEnum.Return:
                this._cash = new CashReturn(300, 100);
                break;

            case CashEnum.Rebate:
                this._cash = new CashRebate(0.8);
                break;

            default:
                throw new ArgumentException("參數錯誤");
            }
        }
        //public Context(PayCash payCash, CashEnum Mode)
        public Context(CashEnum Mode)
        {
            //this.payCash = payCash;
            switch (Mode)
            {
            case CashEnum.normal:
                payCash = new CashNormal();
                break;

            case CashEnum.refund:
                payCash = new CashReturn("300", "100");
                break;

            case CashEnum.discount:
                payCash = new CashDiscount("0.8");
                break;

            default:
                break;
            }
        }
        public static PayCash createCashAccept(CashEnum cashEnum)
        {
            PayCash payCash = null;

            switch (cashEnum)
            {
            case CashEnum.normal:
                payCash = new CashNormal();
                break;

            case CashEnum.refund:
                payCash = new CashReturn("300", "100");
                break;

            case CashEnum.discount:
                payCash = new CashDiscount("0.8");
                break;

            default:
                break;
            }
            return(payCash);
        }