我先看着,过段时间悟明白了再来研究其原理。以下代码模拟了餐馆点菜功能的业务分离。
var cook1 = {
name: '王小柯',
make: function (foodType) {
switch(foodType) {
case 'tudou':
console.log(this.name + '做土豆');
break;
case 'jidan':
console.log(this.name + '做鸡蛋');
break;
case 'fanqie':
console.log(this.name + '做番茄');
break;
default:
console.log('不会做!');
break;
}
}
}
var cook2 = {
name: '赵小东',
make: function (foodType) {
switch(foodType) {
case 'tudou':
console.log(this.name + '做土豆加辣椒');
break;
case 'jidan':
console.log(this.name + '做鸡蛋加白糖');
break;
case 'fanqie':
console.log(this.name + '做番茄加酱油');
break;
default:
console.log('不会做!');
break;
}
}
}
var foodList = ['tudou', 'jidan', 'fanqie'];
function makeFoodCommand (cook, foodType) {
this.cook = cook;
this.foodType = foodType;
}
makeFoodCommand.prototype.execute = function () {
this.cook.make(this.foodType);
}
var commands = [];
for (var i = 0; i < foodList.length; i++) {
var command = null;
if (i % 2 === 0) {
command = new makeFoodCommand(cook1, foodList[i]);
} else {
command = new makeFoodCommand(cook2, foodList[i]);
}
commands.push(command);
}
for (var i = 0; i < commands.length; i++) {
var cmd = commands[i];
cmd.execute();
}
发表评论