Questa è più di una domanda generale sulla struttura del mio codice JavaScript e se sto andando nella giusta direzione verso un codice ben strutturato.JavaScript architecture - mediatori, quando usarli?
Il codice corrente che ho:
(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)));
Ovviamente con il codice di cui sopra, posso utilizzare lo stesso spazio dei nomi (come per pagina/sezione del sito) e li chiamano via myNamespace.className.init()
ecc posso anche combinare questi se voglio, ma sto incapsulando le classi per la leggibilità.
Ora, ho letto http://addyosmani.com/largescalejavascript/ sul concetto di mediatori. La mia seconda domanda è quando (e se) dovrei usare questi? Da className2 ovviamente posso fare:
myNamespace.className2 = {
init:function { myNamespace.className.init() } // do stuff
}
Quindi, perché questo mai sottoscrivere className come mediator.subscribe("classNameInit")
e pubblicare quell'evento in className?
Sono molto aperto a suggerimenti sulla struttura del mio codice in quanto questo è qualcosa che ho bisogno di ottenere mentre sto cambiando il modo in cui scrivo il mio JavaScript.
_Con il modello del mediatore, la comunicazione tra gli oggetti è incapsulata con un oggetto mediatore. Gli oggetti non comunicano più direttamente l'uno con l'altro, ma comunicano attraverso il mediatore. Ciò riduce le dipendenze tra gli oggetti comunicanti, riducendo in tal modo l'accoppiamento._ (c) [wiki] (http: //en.wikipedia.org/wiki/Mediator_pattern) – c69
Ho provato a capirlo e non vedo il motivo per cui farei meglio a farlo piuttosto che a quello che sto facendo ora? Non ho visto esempi del mondo reale che dimostrino che sia una cosa utile. –
una volta che avrai un sacco di moduli che vogliono comunicare tra loro - vedrai quanto pesano le scale di accoppiamento. – c69