Skip to content

Instantly share code, notes, and snippets.

@yagopv
Created November 13, 2012 19:43
Show Gist options
  • Save yagopv/4067920 to your computer and use it in GitHub Desktop.
Save yagopv/4067920 to your computer and use it in GitHub Desktop.
Javascript patterns. Revealing Module Singleton
//Modulo
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
}
}();
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();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment