예제 #1
0
        public void CommandTest()
        {
            {
                Command command = new CommandA();
                var     i       = new Invoke(command);
                i.ExecuteCommand();
            }
            {
                // 创建银行帐号
                var account = new Account();
                // 创建一个存入500元的命令
                var commandIn = new MoneyInCommand(account, 500);
                // 创建一个调度者
                var invoker = new Invoker();

                // 执行存钱
                invoker.ExecuteCommand(commandIn);
                Console.WriteLine("当前余额 " + account.GetTotalAmount().ToString("N2"));

                // 再次存入500
                var commandIn2 = new MoneyInCommand(account, 500);
                invoker.ExecuteCommand(commandIn2);
                Console.WriteLine("当前余额 " + account.GetTotalAmount().ToString("N2"));

                // 取出300
                var commandOut = new MoneyOutCommand(account, 300);
                invoker.ExecuteCommand(commandOut);
                Console.WriteLine("当前余额 " + account.GetTotalAmount().ToString("N2"));

                //重复
                invoker.Redo();
                Console.WriteLine("当前余额 " + account.GetTotalAmount().ToString("N2"));
            }
        }
예제 #2
0
        static void Main(string[] args)
        {
            BankAccount account   = new BankAccount();                          //创建银行账号
            Command     commandIn = new MoneyInCommand(account, 500);           //创建一个存款500的命令
            Invoker     invoker   = new Invoker();                              // 创建一个调度者

            invoker.SetCommand(commandIn);                                      //调度一个 存款 命令
            invoker.ExecuteCommand();                                           //执行刚调度的命令

            Command commandIn2 = new MoneyInCommand(account, 500);              //创建一个 再次 存入 500元 的命令

            invoker.SetCommand(commandIn2);                                     //调度这个 又存入500元的 命令
            invoker.ExecuteCommand();                                           //执行刚调度的命令

            Command commandOut = new MoneyOutCommand(account, 300);             //创建一个 取款 300元 的命令

            invoker.SetCommand(commandOut);                                     //调度一个 取款命令
            invoker.ExecuteCommand();                                           //执行刚调度的命令

            Command commandTransferIn = new TransferInCommand(account, 8000);   //创建一个 转入 8000元 的命令

            invoker.SetCommand(commandTransferIn);                              //调度这个 转入命令
            invoker.ExecuteCommand();                                           //执行刚调度的命令

            Command commandTransferOut = new TransferOutCommand(account, 1500); //穿件一个 转出 1500元 的命令

            invoker.SetCommand(commandTransferOut);                             //调度这个 转出命令
            invoker.ExecuteCommand();                                           //执行刚调度的命令

            //AlipayAccount alipayAccount = new AlipayAccount();
            //Command alipayIn = new AlipayAccountMoneyInCommand(alipayAccount, 8888);
            //AlipayUser alipayUser = new AlipayUser();

            //alipayUser.SetCommand(alipayIn);
            //alipayUser.ExecuteCommand();

            AlipayAccount alipayAccount = new AlipayAccount();
            Command       alipayIn      = new AlipayAccountMoneyInCommand(alipayAccount, 8888);
            Invoker       alipayUser    = new Invoker();

            alipayUser.SetCommand(alipayIn);
            alipayUser.ExecuteCommand();

            Command alipayAccountTransferInCommand = new AlipayAccountTransferInCommand(alipayAccount, 5000);

            alipayUser.SetCommand(alipayAccountTransferInCommand);
            alipayUser.ExecuteCommand();

            Console.Read();
        }