Wzorzec modułu

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 do “Wzorzec modułu”

  1. 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.

  2. 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?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *