Ah, e esqueci de dizer: poderia ser setado um atributo static de BotaoFactory, identificando o SO onde a aplicacao esta sendo executada. Neste caso voce nao precisaria passar nenhum parametro para getBotao().

Este atributo seria setado no inicio da aplicacao, e voce nao precisaria mais se preocupar com o tipo de botao que deve ser criado ou que estah executando. Sempre trabalhe com a classe/interface Botao, nao importando a subclasse que foi utilizada para instanciar o objeto.

Alguem tem mais alguma sugestao?

Rafael Leite
Analista de Sistemas - SAFF
Softplan/Poligraph
Sistema da Qualidade Certificado - ISO 9001 - BVQI - INMETRO
Fone/Fax: 0xx(48) 3027-8000
http://www.softplan.com.br


At 11:31 23/01/2003 -0300, you wrote:

Dah uma olhada nesse exemplo ai, eh simples, mas eh um factory:

class Botao {
}

class BotaoWindows extends Botao {
}

class BotaoMac extends Botao {
}


class BotaoFactory {

private static final int WINDOWS = 1;
private static final int MAC = 2;

static public Botao getBotao(int tipo) {
switch(tipo) {
case BotaoFactory.WINDOWS: return new BotaoWindows();
case BotaoFactory.MAC: return new BotaoMac();
}
}
}


Utiliza��o:

Botao bt = BotaoFactory.getBotao(BotaoFactory.WINDOWS);


Essa �ltima linha poderia ser melhor utilizada se voc� passar para BotaoFactory.getBotao() um par�metro da aplica��o, que define a apar�ncia da mesma, ou o sistema operacional onde ela est� rodando.

Um bom exemplo de factory eh a pattern DAO (http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html).

Eh isso ai!

Rafael Leite
Analista de Sistemas - SAFF
Softplan/Poligraph
Sistema da Qualidade Certificado - ISO 9001 - BVQI - INMETRO
Fone/Fax: 0xx(48) 3027-8000
http://www.softplan.com.br


At 17:20 22/01/2003 -0200, you wrote:
paulo,
vc (ou algu�m...) poderia dar um exemplo de como construir esse factory de botoes?

obrigado,

luis antonio

-----Original Message-----
From: Paulo Silveira [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, January 22, 2003 1:25 PM
To: [EMAIL PROTECTED]
Subject: Re: [enterprise-list] O que i um Factory?


Ola Daniel

A principal funcionalidade eh delegar a decisao do que voce quer construir para uma classe. tem aquele exemplo
classico de botoes: voce quer criar u botao, mas nao sabe se eh pra windows, mac, etc. entao se voce escrever
Button b = new WindowsButton(); por todo codigo, vai ter de trocar isso tudo em todo lugar quando for mudar
pra mac

A ideia do factory, voce estaria fazendo essa decisao em um unico ponto, pondedo mudar essa decisao ateh
mesmo em runtime, sem necessidade de recompilacao e nem mesmo de parar a execucao.

falou

======================
Paulo Eduardo Azevedo Silveira
Grupo de Usu�rios Java
http://www.guj.com.br/

On Tue, 21 Jan 2003 00:11:12 -0200, Daniel C�cero Amadei <[EMAIL PROTECTED]> escreveu :

> De: Daniel C�cero Amadei <[EMAIL PROTECTED]>
> Data: Tue, 21 Jan 2003 00:11:12 -0200
> Para: [EMAIL PROTECTED]
> Assunto: [enterprise-list] O que � um Factory?
>
> Pessoal,
>
> Qual a principal finalidade de um factory?
>
> []'s
> Daniel C. Amadei
> Sun Certified Java Programmer - Platforms 1.2 & 1.4
>
> _________________________________________________________________
> MSN Messenger: converse com os seus amigos online.
> http://messenger.msn.com.br
>
>
> ---------------------------------------------------------------------
> Para cancelar a subscri��o, envie mensagem para: [EMAIL PROTECTED]
> Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]
>
>
>
>



---------------------------------------------------------------------
Para cancelar a subscri��o, envie mensagem para: [EMAIL PROTECTED]
Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]

---------------------------------------------------------------------
Para cancelar a subscri��o, envie mensagem para: [EMAIL PROTECTED]
Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]

---------------------------------------------------------------------
Para cancelar a subscri��o, envie mensagem para: [EMAIL PROTECTED]
Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]

---------------------------------------------------------------------
Para cancelar a subscri��o, envie mensagem para: [EMAIL PROTECTED]
Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]

Responder a