Singleton

A groso modo, podemos decir, que es un patrón de diseño que sólo permite obtener una instancia de una clase.
En JavaScript podemos crear directamente un objeto mediante la sintaxis JSON o crear una instancia mediante una función anónima.


var SingletonA = {
	name:"A",
	getName:function(){
		return this.name;
	}
};

var SingletonB = new function(){
	var name = "B";
	this.getName = function(){
		return name;
	};
};

alert(SingletonA.getName());// A
alert(SingletonB.getName());// B

Con JSimpleClass la vía para crear un singleton es distinta, tenemos que declarar una clase abstracta y final y crear un método estático para acceder a instancia.


function Singleton(){
	var name = "A";
	this.getName = function(){
		return name;
	};
	this.$$DEFINE_STATIC = function(){
		this.$$static.getInstance = function(){
			return this;
		};
	};
};

var Singleton = Class.create("Singleton",Singleton,"final");
var A = Singleton.$$static.getInstance();
alert(A.getName());// return A

Es un poco más cargado que los métodos anteriores, pero nos da un mayor control y no permite aprovechar todos los métodos y propiedades que nos proporciona JSimpleClass.