要是实在不知道要干什么,那就喝两杯思路就来了!

导航菜单

设计模式之命令模式

我先看着,过段时间悟明白了再来研究其原理。以下代码模拟了餐馆点菜功能的业务分离。

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();
}


发表评论