Alguns autores (em particular o Bill Venners e o Joshua Bloch) sugerem que
se dê preferência a métodos de fábrica sobre construtores em várias
situações. A vantagem do método de fábrica como uma boa prática de design é
que ele isola a forma como você decide criar seus objetos. Se o construtor
não faz parte da sua interface pública, você pode optar por controlar a
criação de objetos no futuro sem quebrar o código que já usa sua classe.

Outra vantagem é que você pode ter métodos de fábrica diferentes, que fazem
coisas diferentes ao criar o objeto, com nomes diferentes e até o mesmo
número e tipo de parâmetros (eu já vi código que declarava argumentos extras
nos construtores só para poder sobrecarregá-los - isto definitivamente é uma
razão para escolher métodos de fábrica.) A desvantagem é que não há como
identificar que um método é um factory method criador de instâncias a não
ser que o programador siga certas convenções como chamá-lo de newInstance(),
getInstance() ou newNomeDoObjeto(), por exemplo.

[]s
Helder.

--
Helder da Rocha
Consultor
www.argonavis.com.br
São Paulo


----- Original Message -----
From: "Bráulio Consani Moura" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, December 13, 2001 12:27 PM
Subject: RES: [java-list] Classe


> Geralmente utilizam-se esta forma de inicialização classes Singleton, ou
> seja, somente uma instancia da classe fica "no ar" durante a aplicação.
> O método estático verifica se existe a instância da classe, caso nao
> exista cria-se uma nova, caso exista retorna a referència para ela.
>
> Espero ter ajudado.
> consani
>
> -----Mensagem original-----
> De: Gustavo Barreiro de Carvalho [mailto:[EMAIL PROTECTED]]
> Enviada em: terça-feira, 11 de dezembro de 2001 16:04
> Para: [EMAIL PROTECTED]
> Assunto: [java-list] Classe
>
>
> Galera,
>
>   Alguem sabe me dizer o motivo de algumas classes utilizarem um metodo
> estatico para criar uma nova instancia de si mesma, por exemplo a classe
> javax.xml.parsers.SAXParserFactory. Gostaria de entender a necessidade
> de definir o código de inicialização desta classe neste metodo ao inves
> de definirmos dentro do construtor da classe ?
>
>
> Obrigado.
>
>
> ------------------------------ LISTA SOUJAVA
> ----------------------------
> http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
> dúvidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> para sair da lista: envie email para
> [EMAIL PROTECTED]
> ------------------------------------------------------------------------
> -
>
> ------------------------------ LISTA SOUJAVA ----------------------------
> http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
> dúvidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> para sair da lista: envie email para [EMAIL PROTECTED]
> -------------------------------------------------------------------------
>


------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a