close

This tutorial is about command pattern, which is my thoghts after watching the tutorial created by Christopher Okhravi.

image

Receiver portion:

   1: public class Light
   2: {
   3:     //Action: On/Off
   4:     public void On()
   5:     {
   6:         Console.WriteLine("Turn on the light.");
   7:     }
   8:     public void Off()
   9:     {
  10:         Console.WriteLine("Turn off the light.");
  11:     }
  12:     public void Up()
  13:     {
  14:         Console.WriteLine("Open the door");
  15:     }
  16:     public void Down()
  17:     {
  18:         Console.WriteLine("Close the door");
  19:     }
  20: }

ICommand portion:

image

   1: namespace CommandPattern
   2: {
   3:     interface ICommand
   4:     {
   5:         void Execute();
   6:         void Unexecute();
   7:     }
   8: }

LightOnCommand portion:

image

   1:  
   2: class LightOnCommand : ICommand
   3: {
   4:     Light light;
   5:     public LightOnCommand(Light _light)
   6:     {
   7:         this.light = _light;
   8:     }
   9:     public void Execute()
  10:     {
  11:         this.light.On();
  12:     }
  13:  
  14:     public void Unexecute()
  15:     {
  16:         this.light.Off();
  17:     }
  18: }
  19:  

LightOffCommand portion:

   1: class LightOffCommand : ICommand
   2: {
   3:     Light light;
   4:     public LightOffCommand(Light _light)
   5:     {
   6:         this.light = _light;
   7:     }
   8:     public void Execute()
   9:     {
  10:         this.light.Off();
  11:     }
  12:  
  13:     public void Unexecute()
  14:     {
  15:         this.light.On();
  16:     }
  17: }

LightUpCommand portion:

   1: class LightUpCommand : ICommand
   2: {
   3:     Light light;
   4:     public LightUpCommand(Light _light)
   5:     {
   6:         this.light = _light;
   7:     }
   8:     public void Execute()
   9:     {
  10:         this.light.Up();
  11:     }
  12:  
  13:     public void Unexecute()
  14:     {
  15:         this.light.Down();
  16:     }
  17: }

LightDownCommand portion:

   1: class LightDownCommand : ICommand
   2: {
   3:     Light light;
   4:     public LightDownCommand(Light _light)
   5:     {
   6:         this.light = _light;
   7:     }
   8:     public void Execute()
   9:     {
  10:         this.light.Down();
  11:     }
  12:  
  13:     public void Unexecute()
  14:     {
  15:         this.light.Up();
  16:     }
  17: }

Invoker portion:

image

   1: class Invoker
   2: {
   3:     IList<ICommand> commands = new List<ICommand>();
   4:     public Invoker(ICommand cmd)
   5:     {
   6:         this.commands.Add(cmd);
   7:     }
   8:     public void setCommand(ICommand cmd)
   9:     {
  10:         this.commands.Add(cmd);
  11:     }
  12:     public void Execute()
  13:     {
  14:         foreach(ICommand cmd in commands)
  15:         {
  16:             cmd.Execute();
  17:         }
  18:     }
  19: }

Console portion:

   1: class Program
   2: {
   3:    static void Main(string[] args)
   4:    {
   5:        Light light = new Light();
   6:        ICommand onCmd = new LightOnCommand(light);
   7:        ICommand offCmd = new LightOffCommand(light);
   8:        ICommand upCmd = new LightUpCommand(light);
   9:        ICommand downCmd = new LightDownCommand(light);
  10:        Invoker invoker = new Invoker(onCmd);
  11:        invoker.setCommand(upCmd);
  12:        invoker.setCommand(downCmd);
  13:        invoker.setCommand(upCmd);
  14:        invoker.setCommand(upCmd);
  15:        invoker.setCommand(offCmd);
  16:        invoker.Execute();
  17:        Console.ReadKey();
  18:    }
  19: }

image

arrow
arrow
    全站熱搜

    me1237guy 發表在 痞客邦 留言(0) 人氣()