设计模式读书笔记-命令模式

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 13:28 点击:

命令模式,将请求封装成对象,这可以让你使用不同的请求\队列\或日志请求来参数化对象,命令模式也可以支持撤销操作. 当发出请求和执行请求的对象需要解耦时,使用命令对象.
我们来看一个例子:遥控器例子,我们想通过遥控器控制家中的各种电器;实现这样的功
能要求:.
  1 各种电器提供控制命令接口;
  2 遥控器对象
  3 遥控器上各个插槽对应的命令,命令对象,
  4 各种电器
定义命令接口:
public interface Command {
       public void execute();
}
各种电器对象,我们将各种电器对象单独定义并将对象命令封装进来.也就是各种电器对象的命令方法;
public class Light {
       public Light() {
       }
       public void on() {
              System.out.println("Light is on");
       }
       public void off() {
              System.out.println("Light is off");
       }
}
定义各种电器各种命令的对象实现COMMAND的接口;对应遥控器的各个操作;
public class LightOnCommand implements Command {
       Light light;
      public LightOnCommand(Light light) {
              this.light = light;
       }
      public void execute() {
              light.on();
       }
}
public class LightOffCommand implements Command {
       Light light;
      public LightOffCommand(Light light) {
              this.light = light;
       }
      public void execute() {
              light.off();
       }
}
定义遥控器对象;
public class SimpleRemoteControl {
       Command slot;
      public SimpleRemoteControl() {}
      public void setCommand(Command command) {
              slot = command;
       }
      public void buttonWasPressed() {
              slot.execute();
       }
}
下面实现一个简单的测试类:
public class RemoteControlTest {
       public static void main(String[] args) {
              SimpleRemoteControl remote = new SimpleRemoteControl();
              Light light = new Light();
              LightOnCommand lightOn = new LightOnCommand(light);
              remote.setCommand(lightOn);
              remote.buttonWasPressed();
        remote.setCommand(lightOff);
              remote.buttonWasPressed();
 
 

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 浅析.NET下XML数据访问新机制
    • asp.net 面试+笔试题目第1/2页
    • C# 邮件地址是否合法的验证
    • asp.net 设置GridView的选中行的实现代码
    • C#高级编程:数据库连接[1]
    • 经典C++程序1
    • IIS 自动回收导致后台定时器失效的问题解决
    • ASP.NET GridView列表代码示例
    • Asp.net MVC源码分析--Action Filter的链式调用
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1