14.Javascript设计模式之命令模式----Command

14.Javascript设计模式之命令模式----Command

命令Command模式是GOF23种模式中的一种,是一种行为模式。

认识命令模式

在面向对象编程中,大量使用if…else…,或者switch…case…这样的条件选择语句是“最差实践”。通常这类代码,意味着有重构的余地。

命令模式就是干掉条件选择语句的利器。

通常命令模式的接口中只有一个方法。

实现类的方法有不同的功能,覆盖接口中的方法。

开始命令模式

提供一个接口
var ICommand = new Interface("ICommand",["execute"]);
提供一个接口的实现类

每一个实现类的方法就是if…else…的一个代码块中的代码。

//下面这个定义了一个开机命令
var PowerOnCommand = function(){};
implements(PowerOnCommand,ICommand);

PowerOnCommand.prototype.execute = function(){
    alert("已开机");
};

当然了,你还可以定义很多其他的命令来完成你其他的操作,比如关机,

//下面这个定义了一个关机命令
var PowerOffCommand = function(){};
implements(PowerOffCommand,ICommand);

PowerOffCommand.prototype.execute = function(){
    alert("已关机");
};
executeCommand方法定义
//这里定义一个执行用命令的方法,方法接受一个参数,即为ICommand接口的实现类的实例
var executeCommand = function(command){
    command.execute();
};
运用命令模式
//开机
executeCommand(new PowerOnCommand());

//关机
executeCommand(new PowerOffCommand());

yes,就这么简单的实现了开机和关机的命令模式。

其实你仔细的一想,Windows的各种操作都是基于命令模式的,嘿嘿

当然,命令模式还可以使用其他方式来使用。不一定非用参数回调模式。

命令模式的核心思想是,带有某个方法的具体类的实例,作为接口传给使用方。对象的具体类型信息消失。

在使用方代码中拿到这个接口后调用这个接口的方法。

具体的执行效果,取决的命令发起人提供的对象是哪一个实现类的。这给了命令发起人完全的控制能力,而使用方代码不关心具体的命令类和方法。同时也使条件判断语句成为多余。

简单吗?命令模式其实就是这么简单。

估计我说的不够清楚-_-!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值