Static Factory/Singleton vs Constructors

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?

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

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?

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

[code]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;
}[/code]

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