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
| function Context() { var sum = 0; var list = []; this.getSum = function() { return sum; } this.setSum = function(_sum) { sum = _sum; } this.add = function(eps) { list.push(eps); } this.getList = function() { return list; } }
function PlusExpression() { this.interpret = function(context) { var sum = context.getSum(); sum++; context.setSum(sum); } }
function MinusExpression() { this.interpret = function(context) { var sum = context.getSum(); sum--; context.setSum(sum); } }
(function() { var context = new Context(); context.setSum(20); context.add(new PlusExpression()); context.add(new PlusExpression()); context.add(new PlusExpression()); context.add(new MinusExpression()); context.add(new MinusExpression()); var list = context.getList(); for (var i = 0; i < list.length; i++) { let expression = list[i]; expression.interpret(context); } console.log(context.getSum()); })();
|