-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCommand.js
85 lines (64 loc) · 1.66 KB
/
Command.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/**
* Base command
*/
var Command = function (action, params) {
this._action = null;
this._params = null;
Command.prototype._init.apply(this, arguments);
};
Command.prototype._init = function (action, params) {
this._setAction(action);
this._setParams(params);
};
Command.prototype._setParams = function (params) {
this._params = params;
};
Command.prototype._setAction = function (action) {
this._action = action;
};
Command.prototype.getAction = function () {
return this._action;
};
Command.prototype.getParams = function () {
return this._params;
}
/**
* Child command
*/
var EatCakeCommand = function (params) {
this._action = 'eat cacke';
EatCakeCommand.prototype._init.apply(this, arguments);
};
EatCakeCommand.prototype = Object.create(Command.prototype);
EatCakeCommand.prototype.constructor = EatCakeCommand;
EatCakeCommand.prototype._init = function (params) {
this._params = params;
};
/**
* Person to handle command
*/
var Person = function () {
};
Person.prototype.execute = function (command) {
this._validateCommand(command);
console.log('execute command: ', command.getAction(), command.getParams());
};
Person.prototype._validateCommand = function (command) {
if ((command instanceof Command) === false) {
throw new Error('Command should be an instanceof Command');
}
};
/**
* Tests
*/
var myEatCakeCommand = new EatCakeCommand({
eerste: 'eerste',
tweede: 'tweede'
});
var mySecondEatCakeCommand = new EatCakeCommand({
derde: 'derde',
vierde: 'vierde'
});
var myPerson = new Person();
myPerson.execute(myEatCakeCommand);
myPerson.execute(mySecondEatCakeCommand);