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...