Exista numeroase carti avand ca subiect Design Patterns, acestea reprezentand un set de solutii (patternuri) care rezolva anumite probleme frecvent intalnite in proiectarea aplicatiilor indiferent de limbajul folosit.
In aceasta serie de articole voi incerca sa prezint cateva exemple de Design patterns in Javascript.
Primul design pattern ales de mine este Singleton, care face parte din Design pattern-urile creationale, fiind in acelasi timp cel mai usor Design Pattern.
Mai multe detalii despre ce este, cand se utilizeaza si cateva implementari simple(Java, C++, C#, Python, PHP) pot fi gasite aici

Javascript-ul are anumite particularitati care il diferentiaza de restul limbajelor orientate obiect, si anume faptul ca este prototype based.
Clasele se declara similar functiilor (folosind in mod similar cuvantul cheie function)

/*Singleton example with eager initialization*/

Singleton = function(){
var _instance = null;

return {
getInstance :
function(){
if(_instance === null){
_instance =
{};
}
return _instance;
}
};
}();

Ext.
onReady(function(){
var x = Singleton.getInstance();
var y = Singleton.getInstance();

if(x == y){
alert("Objects are the same instance");
}
});


/*Singleton example with lazy initialization*/

Singleton = function(){
var _instance = null;

return {
getInstance :
function(){
if(_instance === null){
_instance =
{};
}
return _instance;
}
};
}();

Ext.
onReady(function(){
var x = Singleton.getInstance();
var y = Singleton.getInstance();

if(x == y){
alert("Objects are the same instance");
}
});