Skip to content

Instantly share code, notes, and snippets.

@yagopv
Created November 13, 2012 19:42
Show Gist options
  • Save yagopv/4067915 to your computer and use it in GitHub Desktop.
Save yagopv/4067915 to your computer and use it in GitHub Desktop.
Javascript patterns. Revealing Module multi-instance
//Modulo multi
function Cuenta(numerocuenta, saldo) {
this.numerocuenta = numerocuenta;
this.saldo = saldo;
};
var Contabilidad = function () {
var _cuentas,
_saldototal,
_init = function (cuentas, saldototal) {
_cuentas = cuentas || new Array();
_saldototal = 0;
},
_nuevaCuenta = function (numerocuenta, saldo) {
_cuentas.push(new Cuenta(numerocuenta, saldo));
},
_eliminarCuenta = function (numerocuenta) {
_borrar(_cuentas, numerocuenta);
},
_borrar = function (cuentas, numerocuenta) {
var j = 0;
while (j < cuentas.length) {
if (cuentas[j].numerocuenta == numerocuenta) {
cuentas.splice(j, 1);
return;
} else { j++; }
}
},
_modificarSaldo = function (numerocuenta, saldo) {
_modificar(_cuentas, numerocuenta, saldo);
},
_modificar = function (cuentas, numerocuenta, saldo) {
var j = 0;
while (j < cuentas.length) {
if (cuentas[j].numerocuenta == numerocuenta) {
cuentas[j].saldo += saldo;
return;
} else { j++; }
}
},
_Cuentas = function () { return _cuentas },
_SaldoTotal = function () { return _saldototal },
_calcularSaldoTotal = function () {
var j = 0;
_saldototal = 0;
while (j < _cuentas.length) {
_saldototal += _cuentas[j].saldo;
j++;
}
}
// Métodos públicos
return {
init: _init,
nuevaCuenta: _nuevaCuenta,
eliminarCuenta: _eliminarCuenta,
modificarSaldo: _modificarSaldo,
calcularSaldoTotal: _calcularSaldoTotal,
Saldo: _SaldoTotal,
Cuentas: _Cuentas
}
}
var contabilidad = Contabilidad();
contabilidad.init(new Array(), 0);
contabilidad.nuevaCuenta(111111, 100.00);
contabilidad.nuevaCuenta(222222, 200.00);
contabilidad.modificarSaldo(111111, 100.00);
contabilidad.eliminarCuenta(111111);
contabilidad.calcularSaldoTotal();
var contabilidad2 = Contabilidad();
contabilidad2.init(new Array(), 0);
contabilidad2.nuevaCuenta(111111, 100.00);
contabilidad2.nuevaCuenta(222222, 200.00);
contabilidad2.nuevaCuenta(333333, 200.00);
contabilidad2.nuevaCuenta(444444, 200.00);
contabilidad2.modificarSaldo(111111, 1000.00);
contabilidad2.eliminarCuenta(333333);
contabilidad2.calcularSaldoTotal();
var contabilidad3 = Contabilidad();
contabilidad3.init(new Array(new Cuenta(111111, 100.00), new Cuenta(222222, 200.00)), 0);
contabilidad3.nuevaCuenta(333333, 100.00);
contabilidad3.calcularSaldoTotal();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment