美文网首页
第九章 命令模式

第九章 命令模式

作者: 狐尼克朱迪 | 来源:发表于2016-09-28 09:47 被阅读0次

命令模式:将请求与实现解耦并封装城独立对象,从而使不同的请求对客户端的实现参数化。我们在使用jquery的动画时会如下面的形式调用:

    $(selector).animate({params},speed,callback);

这种就是一种命令模式。

例子

以一个游戏的实现为例,当用户按下W、S、A、D时角色会有不同的动作,而且有回放功能记录以前的操作:

  var Ryu = {
    attack: function(){
        console.log("攻击");
    },
    defense: function(){
        console.log("防守");
    },
    jump: function(){
        console.log("跳跃");
    },
    crouch: function(){
        console.log("蹲下");
    }
};

var makeCommand = function(receiver, state){
    return function(){
        receiver[state]();
    }
};

var commands = {
    "119": "jump",      // W
    "115": "crouch",    // S
    "97": "defense",    // A
    "100": "attack"     // D
};

var commandStack = [];

document.onkeypress = function( ev ){
    var keyCode = ev.keyCode,
        command = makeCommand( Ryu, commands[keyCode] );

    if(command){
        command();
        commandStack.push(command);
    }
};
document.getElementById("replay").onClick = function(){
    var command;
    while( command = commandStack.shift() ){
        command();
    }
}

回放功能很好的体现了命令模式的作用。js中函数是一等公民,命令模式相当于记录了一个个的执行函数。

相关文章

  • 第九章 命令模式

    命令模式:将请求与实现解耦并封装城独立对象,从而使不同的请求对客户端的实现参数化。我们在使用jquery的动画时会...

  • 12.vim的使用技巧

    命令模式 、命令行模式、编辑模式: INSERT 首次进入文件: 命令模式输入: 表示 命令行模式出现...

  • 五、Linux vim编辑器

    vim编辑器三种模式:命令模式、编辑模式、末行模式 1.命令模式: vim进入文件后就是命令模式 1.1 命令模式...

  • 终端操作文件

    VIM 模式切换从命令模式->编辑模式:i,a,o,I,A,O从编辑模式->命令模式:ESC从命令模式->末行模式...

  • vim 操作 && Mac 配置本地Apache

    一、vim 的基本命令操作 vim 的模式: 编辑模式 ,命令模式 编辑模式: 命令模式:可以通过命令 最重要的命...

  • Vim高效编辑器

    Vim程序员高效编辑器 命令模式,输入模式,底线命令模式 默认进入vim就是命令模式,输入i变为输入模式 命令模式...

  • Command模式

    命令模式(Command) 命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Tran...

  • 设计模式详解——命令模式

    本篇文章介绍一种设计模式——命令模式。本篇文章内容参考《JAVA与模式》之命令模式。 一、命令模式的概念 命令模式...

  • Vi编辑器

    命令模式 文本输入模式 末行模式。 插入模式 移动光标: 删除命令: 撤销命令: 重复命令 文本行移动: 复制粘贴...

  • JavaScript设计模式七(命令模式)

    JavaScript设计模式七(命令模式) 定义: 命令模式是最简单和优雅的模式之一,命令模式中的命令指的是一个执...

网友评论

      本文标题:第九章 命令模式

      本文链接:https://www.haomeiwen.com/subject/ktuhyttx.html