Java Script to specyficzny język programowania. Brak klas i nietypowe dziedziczenie prototypowe to główne cechy tej technologii. Przez długi czas nie istniały precyzyjne zasady pozwalające na tworzenie kody wysokiej jakości. Przez wiele lat Java Script nosił miano, słabego i podatnego na błędy języka, który wybaczał wiele początkującym programistom. Aktualnie coraz większa liczba bibliotek i stworzenie wspólnych standardów pozwoliły na ustanowienie solidnej pozycji Java Scriptu w internecie.
Organizacja kodu
Jeden z najpopularniejszych sposobów organizacji kodu Java Script opisuje wzorzec modułu. Niestety Java Script nie udostępnia ani zmiennych prywatnych, ani klasycznego dziedziczenia. Jednak programiści przygotowali odpowiedni sposób zapisu kodu w celu osiągnięcia konkretnych korzyści.
var aya = aya || {};
aya.framework = function() {
// private property
var version = '0.0.2';
// private method
var getVersion = function() {
return version;
}
// all returned is a public
return {
// initialization
init: function() {
console.log('init successful...');
},
printModuleVersion: function() {
console.log('Version: ' + getVersion());
}
}
}();
Przygotowany w ten sposób obiekt przechowuje wewnątrz pewne zmienne jako prywatne.
Natomiast kod zwracany jest traktowany jako publiczny. Ten prosty sposób pozwala
na ukrycie części implementacji i dostęp spoza samego obiektu.
aya.framework.init();
Jak się spodziewamy w konsoli wyświetli się informacja o inicjalizacji obiektu.
aya.framework.printModuleVersion();
Podobnie będzie, kiedy sprawdzimy wersję naszego obiektu, ale możliwe będzie to
jedynie poprzez publiczną metodę.
aya.framework.getVersion();
Próba uzyzkania wersji przy użyciu metody prywatnej poza obiektem, kończy się
błędem, czyli dokładnie jak powinno.
> TypeError: Object #<Object> has no method 'getVersion'
Podsumowanie
Prosty, rekomendowany sposób organizacji kodu dla Twoich aplikacji. Modułowa struktura porządkująca przydatna nawet w małych projektach. Nie zaśmiecaj więcej globalnej przestrzeni nazw. Stosuj wzorzec modułu.
3 odpowiedzi na “Wzorzec modułu”
Jako uzupełnienie:
http://addyosmani.com/resources/essentialjsdesignpatterns/book/#modulepatternjavascript
Bardzo dobre uzupełnienie. Czytałem jego książkę na temat Backbone. Teraz jestem na etapie Java Script: The Good Parts Douglasa Crockforda. Świetne materiału do zaawansowanego programowania w Java Script.
Fajny przykład :) Właśnie tworzę sobie taki moduł. Zauważyłem że starsze przeglądarki z taką wersją mają problemy np. IE8. To margines wiadomo i można nie przejmować się. Gdzie można sprawdzić od której wersji IE i inne przeglądarki obsługują taką postać budowy modułów?