Sei que a dica é singela, mas criar um Singleton no Flex não é tão simples assim.
Para os marinheiros de primeira viagem, Singleton é um padrão de projeto que permite criar classes que dêem origem a apenas um objeto. Isso é bastante útil para definir classes de controle, ou classes que conterão dados que serão compartilhados por toda a aplicação.
O princípio básico de criação do Singleton é não permitir que o usuário da classe instancie a classe diretamente. Desta forma, o usuário terá que chamar algum método que retorne a instância dessa class. A maneira mais comum de fazer isso é definir o construtor da classe como privado e criar um método estático que retorne a única instância da classe. O problema é que em Action Script não é possível criar construtores privados. O que fazer?
Existe uma outra maneira de inviabilizar a instaciação de uma classe: Basta que utilizemos um parâmetro no construtor, de um tipo inacessível por qualquer outra classe, que não a própria. Hein? Pois é, vamos criar um parâmetro de um tipo, por exemplo, SingletonEnforcer. Esse tipo é uma classe definida sem pacote e sem visibilidade. Isso significa que somente a classe que estamos criando será capaz de criar um objeto do tipo SingletonEnforcer. Pronto. Já temos nosso artifício que impede que um usuário instancie a classe diretamente. Vejam o código e percebam a definição da classe SingletonEnforcer no final do arquivo:
package org.example
{
public class MeuSingleton
{
private static var _instance:MeuSingleton;
public var dados:Object;
public function MeuSingleton(enforcer:SingletonEnforcer) {
if (enforcer==null){
throw new Error("Não é possível instanciar a classe MeuSingleton diretamente");
}
}
public function get instance():MeuSingleton{
if (_instance == null){
_instance = new MeuSingleton(new SingletonEnforcer);
}
return _instance;
}
}
}
class SingletonEnforcer{ }
Para acessar a instância do objeto, faça:
import org.example.MeuSingleton; MeuSingleton.instance.dados = "Olá pessoal!";
Atenção:Use o padrão Singleton com parsimônia. O uso indiscriminado de Singletons torna o código altamente acoplado e é considerado uma prática ruim de programação. O Singleton deve ser usado com cautela. Eu atualmente prefiro usar um container IoC que me permite fazer Injeção de Dependências. É o caso do Swiz, mas isso eu deixo para um outro post.
Hoje tive que revelar uma foto para o dia das mães. Era essa imagem aí de cima, que foi feita pelo Gabriel, meu filho de 3 anos, no Photoshop. Não é sacanagem, eu ensinei ele a usar os recursos básicos do Photoshop e ele descobriu um pincel muito maneiro que dá um efeito super colorido à imagem.
Pois bem, quando cheguei na loja, percebi que tinha esquecido de copiar o arquivo para um pendrive. Começa a minha saga:

Passei a semana inteira vivenciando a expectativa de subir todas as minhas fotos para o flickr. Ao todo são mais de 43 mil fotos organizadas em pastas em meu servidor e replicadas em 2 backups, um em um desktop aqui em casa e outro na Internet.
