我先看着,过段时间悟明白了再来研究其原理。以下代码模拟了餐馆点菜功能的业务分离。
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(); }
发表评论