Esto es más una pregunta general sobre la estructura de mi código JavaScript y si voy en la dirección correcta hacia un código bien estructurado.JavaScript architecture - mediators, when to use them?
El código actual Tengo:
(function (myNamespace, $, undefined) {
myNamespace.className = {
init:function { } // do stuff
}
} (window.myNamespace= window.myNamespace|| {}, jQuery)));
(function (myNamespace, $, undefined) {
myNamespace.className2 = {
init:function { } // do stuff
}
} (window.myNamespace= window.myNamespace|| {}, jQuery)));
Obviamente con el código anterior, puedo usar el mismo espacio de nombres (según la página de la sección/sitio) y llamarlos a través de myNamespace.className.init()
etc. También se pueden combinar estos si quiero, pero estoy encapsulando clases para facilitar la lectura.
Ahora, he estado leyendo http://addyosmani.com/largescalejavascript/ sobre el concepto de mediadores. Mi segunda pregunta es cuándo (y si) debería usarlos? De className2, obviamente, que puedo hacer:
myNamespace.className2 = {
init:function { myNamespace.className.init() } // do stuff
}
Así que ¿por qué esta vez suscribirse a className como mediator.subscribe("classNameInit")
y publicar ese evento en className?
Estoy muy abierto a sugerencias sobre la estructura de mi código, ya que es algo que necesito corregir mientras estoy cambiando la forma en que escribo mi JavaScript.
_Con el patrón del mediador, la comunicación entre los objetos se encapsula con un objeto mediador. Los objetos ya no se comunican directamente entre ellos, sino que se comunican a través del mediador. Esto reduce las dependencias entre los objetos que se comunican, lo que reduce el acoplamiento._ (c) [wiki] (http: //en.wikipedia.org/wiki/Mediator_pattern) – c69
He tratado de entenderlo y no veo la razón por la cual sería mejor hacerlo en lugar de hacerlo ahora. No he visto ejemplos del mundo real que demuestren que sea útil. –
una vez que tenga una gran cantidad de módulos que quieran comunicarse entre sí, verá cuán difícil es escalar el acoplamiento. – c69