Anexsoft | Blog y dictado de cursos de Tecnología

En este encontrarás tutoriales de tecnología como PHP, ASP.NET MVC, Front-End, entre otros y cursos exigentes de modalidad online que te ayudarán a crecer profesionalmente.

Ejemplo avanzado del patrón módulo con javascript (Module Pattern)
Actualizado el 10 Noviembre, 2016 y leído 399 veces
Calificación: 10.00 / 10

Ejemplo avanzado del patrón módulo con javascript (Module Pattern)

Anexsoft

Bien señores, en la entrada anterior vimos como implementar el patrón Module con Javascript y vimos que es muy práctico y que problamente hagamos uso de este sin darnos cuenta. Lo que vamos a ver ahora es mejorar este, porque la solución anterior no es completamente de mi agrado.

 

Creando un contenedor de módulos

Hasta ahora hemos visto el concepto en general y su utilidad pero yo quiero que mi módulo sea más escalable que (mantenerlo, actualizarlo, mejorarlo) sea una tarea más sencilla y que un programador nuevo no se le dificulte.

¿Saben cual es el principal problema del ejemplo anterior?, no me gusta que todo el código este escrito en un mismo lugar, eso va a crecer y va a ser horrible mantener más adelante. Entonces hagamos que nuestro módulo se vuelva una fábrica de módulos (una especie de contenedor de módulos).

var Module = (function(){
    var modules = {};
    return {
        create: function(name, credit) {
            if(modules[name] === undefined) {
                modules[name] = {};
            }

            modules[name].credit = function(){
                return credit;
            }
        },
        append: function(name, module) {
            if(modules[name] === undefined) {
                throw 'Module not exists';
            }

            for(var k in module) {
                modules[name][k] = module[k];
            }
        },
        get: function(name) {
            if(modules[name] === undefined) {
                throw 'Module not exists';
            }

            return modules[name];
        }
    }
})();

El ejemplo mostrado es experimental, lo he creado para este tutorial y es una base para que ustedes puedan usar como partida.

 

¿Cómo registro un módulo?

Module.create('venta', {
    name: 'Venta',
    description: 'Módulo que contiene formulas para trabajar con los montos de la venta',
    version: '1.0'
});

Module.create('financiera', {
    name: 'Financiera',
    description: 'Módulo que contiene formulas para trabajar con las tasas de interés',
    version: '1.0'
});

En este ejemplo he creado 2 módulos y cada vez que creamos un módulo se creará un método adicional para obtener los créditos del módulo.

 

Agregando comportamiento a nuestro módulo

Module.append('venta', {
    iva: 0.18,
    calcularIva: function(monto) {
        return monto * this.iva;
    },
    calcularMontoSinIva: function(monto){
        return monto / (1 + this.iva);
    }
});

Module.append('financiera', {
    calcularTasaEfectivaAnual: function(capital, interes, periodos) {
        return capital * Math.pow(1 + interes, 2);
    }
});

Listo, ya hemos agregado a nuestro módulo de venta y financiera su lógica de negocio obteniendo así un código más escalable ya que un programador nuevo que quiera extender las funcionalidades del módulo de venta o financiera solo hará esto.

Module.append('venta', {
    calcularUtilidad: function(costo, ingreso) {
        return ingreso - costo;
    }
});

Nuestro código adicionará un nuevo método a nuestro módulo de venta y nuestro nuevo programador evitó la tediosa tarea de comerse tanto código. Esa es la finalidad de los patrónes de diseño, hacernos la vida más fácil.

 

¿Cómo hago uso de los módulos?

/* Obteniendo el módulo venta */
var venta = Module.get('venta');
console.log(venta.calcularMontoSinIva(1000)); // 847.4576271186442

/* Obtener crédito */
console.log(venta.credit());

/* Obteniendo el módulo financiera */
var financiera = Module.get('financiera');
console.log(financiera.calcularTasaEfectivaAnual(10000, 0.05, 2)); // 11025

¡Adquiera ya!

  • Software de Venta e Inventario hecho en PHP y Codeigniter

    Software de Venta e Inventario hecho en PHP y Codeigniter
  • Código de fuente de Red Social desarrollada en ASP.NET MVC

    Código de fuente de Red Social desarrollada en ASP.NET MVC

Últimas publicaciones

Encuesta

¿Sobre qué te gustaría que se hable más?

Síguenos

Estudia con nosotros y crece profesionalmente

Nuestros cursos han sido hecho en base a lo que demanda el mercado hoy en día.
La experiencia obtenida es la de un ambiente laboral.

Anexsoft
© 2017 Anexsoft, blog y cursos online de TI.