SimpleFactory without prototype
for result of a whole new operate object.
by lozenlin
JavaScript
function Operation() {
// public:
// methods
this.getNumberA = function() {
return _numberA;
}
this.setNumberA = function(value) {
_numberA = value * 1.0;
}
this.getNumberB = function() {
return _numberB;
}
this.setNumberB = function(value) {
_numberB = value * 1.0;
}
this.getResult = function() {
return _result;
}
this.setResult = function(value) {
_result = value;
}
// private:
var _numberA = 0.0;
var _numberB = 0.0;
var _result = 0.0;
}
var OperationFactory = {}
OperationFactory.createOperate = function(operate) {
//create a object of base class.
var oper = new Operation();
oper.parent = {}
oper.parent.getResult = oper.getResult;
//override method
switch (operate) {
case "+":
oper.getResult = function() {
this.setResult(this.getNumberA() + this.getNumberB());
return this.parent.getResult();
}
break;
case "-":
oper.getResult = function() {
this.setResult(this.getNumberA() - this.getNumberB());
return this.parent.getResult();
}
break;
case "*":
oper.getResult = function() {
this.setResult(this.getNumberA() * this.getNumberB());
return this.parent.getResult();
}
break;
case "/":
oper.getResult = function() {
this.setResult(this.getNumberA() / this.getNumberB());
return this.parent.getResult();
}
break;
default:
throw "Invalid operator!";
break;
}
return oper;
}
//main
var Program = {};
//static method
Program.Main = function() {
var numberA = window.prompt("Please input a value of NumberA:", 0);
var operate = window.prompt("Please input a type of Operation...