设计模式之命令模式

来源:互联网 发布:进击的巨人知乎 编辑:程序博客网 时间:2024/04/29 19:30

命令模式可将“动作请求者”从“动作执行者”对象中解耦。

利用“命令对象”,把请求封装成一个特定的对象,命令对象与执行对象沟通。

Command接口:

    public interface Command    {        public void Execute();    }
    public class LightOnCommand:Command    {        private Light light;        public LightOnCommand(Light light)        {            this.light = light;        }        public void Execute()        {            light.On();        }    }
    public class DoorOpenCommand:Command    {        private Door door;        public DoorOpenCommand(Door door)        {            this.door = door;        }        public void Execute()        {            door.Open();        }    }
2个命令对象抽取出来。

Door和Light对象:

    public class Door    {        public void Open()        { }        public void Close()        { }    }    public class Light    {        public void On()        {                    }        public void Off()        {         }    }
执行对象:

    public class SimpleRemoteControl    {        private Command slot;        public Command Slot        {            get { return slot; }            set { slot = value; }        }        public void ButtonWasPressed()        {            slot.Execute();        }    }
Test:
        static void Main(string[] args)        {            SimpleRemoteControl control = new SimpleRemoteControl();            Light light = new Light();            LightOnCommand onCommand = new LightOnCommand(light);            control.Slot = onCommand;            control.ButtonWasPressed();            Door door = new Door();            DoorOpenCommand openCommand = new DoorOpenCommand(door);            control.Slot = openCommand;            control.ButtonWasPressed();        }
这就是一个简单的命令模式例子,在这个基础上,还可以衍生发展 多命令组合、撤销操作、队列处理等操作。






原创粉丝点击