Mediator Patter Library
Snippets for implementing Mediator Patter
by Hugh Chapman
JavaScript
// Mediator Pattern Rules
// 1. Hands to yourself
// only call own methods
// Dont Access DOM elements outside of your box
// Don't access non-native global objects
// 2. Ask, Don't Take
// Anything else you need ask the mediator class
// 3. Don't Leave Your Toys Around
// Don't create global objects
// 4. Don't Talk To Strangers
// Don't directly reference other modules
// CORE
Core.register("module-name", function(sandbox){
return {
init: function(){
//constructor
},
destroy: function() {
// destructor
}
};
});
Core = function() {
var moduleData = {};
return {
register: function(moduleId, creator){
moduleData[moduleId] = {
creator: creator,
instance: null
};
},
start: function(moduleId){
moduleData[moduleId].instance = moduleData[moduleId].creator(new Sandbox(this));
moduleData[moduleId].instance.init();
},
stop: function(moduleId){
var data = moduleData[moduleId];
if (data.instance) {
data.instance.destroy();
data.instance = null;
}
},
startAll: function(){
for (var moduleId in moduleData) {
if(moduleData.hasOwnProperty(moduleId)){
this.start(moduleId);
}
}
},
stopAll: function(){
for (var moduleId in moduleData) {
if(moduleData.hasOwnProperty(moduleId)){
this.stop(moduleId);
}
}
}
}
}
//register modules
Core.register('module1', function(sandbox){ /*...*/ });
Core.register('module2', function(sandbox){ /*...*/ });
Core.register('module3', function(sandbox){ /*...*/ });
Core.register('module4', function(sandbox){ /*...*/ });
...
// start the application by starting all...