Esempio n. 1
0
        //命令模式(Command Pattern),以下程式碼以 C# 為例

        //說明:
        //命令包含發出命令和執行命令。
        //命令模式,則是將這個過程拆成三個物件,
        //發出命令的物件(Invoker)、命令的物件(command)、執行命令的物件(receiver)
        //由 Invoker 物件,來建造要執行的命令。
        //如此要擴充功能時,例如增加命令重覆執行、取消命令...等,也變得較單純。

        //實現重點在於,分成發命令物件、命令物件、執行命令的物件。
        //發命令物件:可用來新增要執行命令。
        //命令物件:可指定執行此命令的物件。
        //執行命令的物件:真正執行此命令的物件。
        static void Main(string[] args)
        {
            // 初始化各個物件
            Invoker invoker = new Invoker();                               // 發命令物件

            ReceiverRobot robot = new ReceiverRobot();                     // 執行命令物件

            GoAheadCommand   cmd_go_ahead   = new GoAheadCommand(robot);   // 向前走指令
            TurnLeftCommand  cmd_turn_left  = new TurnLeftCommand(robot);  // 左轉指令
            TurnRightCommand cmd_turn_right = new TurnRightCommand(robot); // 右轉指令

            // 設定要執行的命令
            invoker.SetCommand(cmd_go_ahead);
            invoker.SetCommand(cmd_go_ahead);
            invoker.SetCommand(cmd_turn_left);
            invoker.SetCommand(cmd_go_ahead);
            invoker.SetCommand(cmd_turn_right);

            // 開始執行命令
            invoker.Run();

            Console.Read();
        }
 public GoAheadCommand(ReceiverRobot robot)
     : base(robot)
 {
 }
Esempio n. 3
0
 public TurnRightCommand(ReceiverRobot robot)
     : base(robot)
 {
 }
Esempio n. 4
0
 public TurnLeftCommand(ReceiverRobot robot)
     : base(robot)
 {
 }
Esempio n. 5
0
 // 設定實際執行命令的物件
 public Command(ReceiverRobot robot)
 {
     this.robot = robot;
 }