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] -------------------------------------------------------------------------