Static Factory/Singleton vs Constructors

5 respostas
Rafael_Nunes

To lendo o Effective Java aqui, e logo no primeiro capítulo já me enrolou as idéias.
Ele sugere(quando necessário) criar métodos estáticos que retornam uma instância da classe, ao invés de construtores.
Segundo o autor, esta pratica possibilita a não-duplicação de objetos desnecessários.
Por exemplo, ao invés de fazer um new Boolean(boolean), fazer um método que retorne o Boolean.valueOf(boolean).
Porém se eu utilizar um valueOf() não vou estar da mesma forma retornando um objeto Boolean?

5 Respostas

jgbt

no caso especifico do Boolean eu acho que não, se não me engano ele retorna o mesmo objeto, pq ele so pode ter dois valores, eu acho(alguem???).

mas quanto ao resto da duvida, acho que vai depender muito, se vc precisar garantir estado dos objetos, criar esse tipo de metodo não acho uma boa.

[]'s

Rafael_Nunes

Na verdade minha dúvida em específico é: Ele não vai criar um objeto novo em ambos os casos?Qual a diferença então de fazer um e outro?

marcioa1

Não,

Ele vai retornar o único objeto criado daquela classe. É o chamado pattern Singleton.

Observe que :

1 - o construtor é privado
2 - existe uma variável estática do mesmo tipo da classe que é iniciado com null. Variável estática indica que só existirá uma instancia por classe.
3 - existe um método público do tipo getClasse que irá retornar esta variável estática.

Não estou com o livro aqui mas deve ser isto que ele explica.

Márcio

danieldestro
public final class Boolean implements java.io.Serializable {
    public static final Boolean TRUE = new Boolean(true);
    public static final Boolean FALSE = new Boolean(false);

   //...

    public static Boolean valueOf(String s) {
	return toBoolean(s) ? TRUE : FALSE;
    }
Rafael_Nunes

Putz, é mesmo, o static vai garantir que será chamado sempre um único objeto.
Grato.

Criado 14 de junho de 2005
Ultima resposta 14 de jun. de 2005
Respostas 5
Participantes 4