美文网首页
命令模式

命令模式

作者: pws019 | 来源:发表于2017-04-30 13:02 被阅读3次

命令模式

命令模式的一般性思想是,提供一个方法将分发命令的责任与命令的执行相分离,将职责委派给不同的对象。

聪明的实现,简单的命令对象将行为与该对象希望调用的行为绑定在一起。他们始终包含一个执行操作,所有的命令对象具有相同的接口可以在需要的时候轻易的替换,并且这被认为是该模式的巨大好处之一。

为了演示命令模式,我们将创建一个简单的汽车采购服务。

(function(){

  var carManager = {

    // request information
    requestInfo: function( model, id ){
      return "The information for " + model + " with ID " + id + " is foobar";
    },

    // purchase the car
    buyVehicle: function( model, id ){
      return "You have successfully purchased Item " + id + ", a " + model;
    },

    // arrange a viewing
    arrangeViewing: function( model, id ){
      return "You have successfully booked a viewing of " + model + " ( " + id + " ) ";
    }

  };

})();

这个carManage的方法被直接调用是可行的,至少从js语法上说是有效的。但是有时这样写带来一些不方便之处。

例如,想象一下如果carManage的核心API发生了变化,那么所有调用这个API的地方都得跟着做相应的修改。这可以被看作是一个耦合层,违反了面向对象设计的松耦合原则,我们可以进一步抽象API来解决这个问题。

接下来让我们扩展这个carManage以便我们可以通过在我们的应用中使用命令模式达到如下效果:在carManage中接受任何命名的方法作为参数可被执行;可以传递任何可以被利用的数据,例如Id与model。

它可能长得像这样。

carManager.execute( "buyVehicle", "Ford Escort", "453543" );

按照这个结构,我们现在应该添加carmanager.execute方法的定义如下:

carManager.execute = function ( name ) {
    return carManager[name] && carManager[name].apply( carManager, [].slice.call(arguments, 1) );
};

我们最终的调用可能如下:

carManager.execute( "arrangeViewing", "Ferrari", "14523" );
carManager.execute( "requestInfo", "Ford Mondeo", "54323" );
carManager.execute( "requestInfo", "Ford Escort", "34232" );
carManager.execute( "buyVehicle", "Ford Escort", "34232" );

相关文章

  • 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设计模式七(命令模式) 定义: 命令模式是最简单和优雅的模式之一,命令模式中的命令指的是一个执...

  • Cisco 路由器配置命令大全(二)

    (1)模式转换命令 用户模式----特权模式,使用命令"enable"特权模式----全局配置模式,使用命令"co...

网友评论

      本文标题:命令模式

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