Более понятный пример. Здесь вы никогда не можете получить basket, но в то же время разрешено узнать количество итемов в ней и ли добавить еще один. Этот паттерн скрывает все что не должно быть увидено и изменено и возвращает вам только то, что захотите вы.
var module = (function(){
/**
* private variables are declared only inside the module
*/
var basket = [];
/**
* public variables are declared in the returned object
*/
return {
add: function(value){ ... },
count: function() { ... }
};
}());
module.add('a');
module.add('b');
module.add('c');
var total = module.count();
Хотя возвращать вы можете что угодно. Даже такую обычную функцию можно назвать "фасадом" потому что она навешивает события, но совершенно неважно как она это сделает.
// a simple facade that masks the various browser-specific methods
function addEvent( element, event, callback ) {
if( window.addEventListener ) {
element.addEventListener( event, callback, false );
} else if( document.attachEvent ) {
element.attachEvent( 'on' + event, callback );
} else {
element[ 'on' + event ] = callback;
}
}