sábado, 14 de maio de 2011

Design Patterns: Singleton

Pessoal, desculpe por não postar nada nos últimos dias...
Tive uns problemas de saúde. (nada grave, mas precisava me cuidar...)
Ainda não estou 100%, mas dá para levar. :)

Mas voltando ao assunto do título:

Design Patterns, em computação, é uma receita de bolo de como fazer certas coisas recorrentes que aparecem no código-fonte. Por exemplo: "Como criar uma instância única para todo objeto de uma certa classe?"

Como faço isso? -- você pergunta.

Fácil, utilizando o "design pattern" chamado Singleton!

A "receita de bolo":

public class MinhaClasse {

//Declarando um objeto estático da classe
private static MinhaClasse instancia = null;

//Construtor privado !?! (somente a própria classe consegue instanciar)
private MinhaClasse() {
//Inicializando objeto
}

//Cria uma única instância para o objeto
public static MinhaClasse getInstance() {
if (instancia == null) {
instancia = new MinhaClasse();
}
return instancia;
}
}

Para todo objeto que precisar de uma instância (no caso, a mesma instância), é só usar o método getInstance:

...
MinhaClasse obj1 = MinhaClasse.getInstance();
...
MinhaClasse obj2 = MinhaClasse.getInstance();
...

Qual é a vantagem de se utilizar este "design pattern"? -- pergunta você, de novo. :P

Talvez, por economia de memória (já que existe somente uma instância) e o sistema "guarda" o último estado da instância (este último, talvez não seja uma vantagem...).

Quando eu devo usar? -- pergunta você, outra vez. :P

Geralmente em classes úteis, do tipo que não precise guardar valores (funções matemáticas, de formatação, de ordenação e outras mais).

Hum... Espero que eu não tenha complicado e sim, explicado. :P

Nenhum comentário: