Clases Estáticas
Escrito el 16/09/2003 por Xavi Beumala
Tras un buen rato de conversación con Sixto acerca del post que precede a este (con el que comparto su opinión totalmente) se nos ha encendido la bombilla para definir clases estáticas.
El modificador static de Flash MX 2004 no se puede aplicar a clases, almenos yo no he sabido cómo hacerlo, y sólo se puede aplicar a métodos y atributos. Pero siempre hay rodeos...
Una clase estática es una clase no instanciable, una clase a partir de la que no se pueden crear objetos. Por ejemplo, en Flash la clase Math sería static ya que utilizamos sus métodos directamente sin tener que instanciarla.
Cuando queremos un número aleatorio escribimos: Math.random() y no creamos un nuevo objeto con new Math() para después llamar al método random()
En fin, teniendo en cuenta que MX 2004 sí que nos permite declarar métodos estáticos (métodos accesibles sólo a través de la clase y no de ningún objeto) podríamos crear una clase con todos sus métodos definidos como estáticos. Este sistema aún nos plantea el problema que dicha clase será instanciable.
Para solventarlo sólo tenemos que poner el constructor como privado. Por lo tanto, para declarar una clase estática podríamos hacer algo así:
class Tracer {
private function Tracer() {};
public static function stablishConnection() {
// Bla bla bla
}
public static function trace(msg:String,type:String) {
// Bla bla bla
}
// Aquí podrían ir más métodos estáticos
}
Y para utilizarlo, haríamos algo así:
Tracer.stablisConnection();
Tracer.trace("hola","Error");
El pequeño fragmento de código anterior corresponde a parte del código que comentaba para hacer el Debugger o ventana de Output hace unos días atrás.