| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2007 16:42:16
|
renanpto
JavaEvangelist
![[Avatar]](/images/avatar/35df583a06ef378df8540f6db2d36534.jpg)
Membro desde: 16/04/2007 11:58:32
Mensagens: 458
Localização: Curitiba
Offline
|
Dai galera,
Alguem pode citar algum exemplo de como eu posso utilizar o pattern AbstractFactory ?
valeu
|
Sun Certified Java Programmer 5
Oracle Certified Web Component Developer 5
www.devlogic.com.br |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2007 16:52:03
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
O padrão AbstractFactory é muito usando quando você tem um conjunto de classes, normalmente relacionadas. Por exemplo, no Java, o AbstractFactory é usado para o LookAndFeel.
Vamos supor que você vá fazer um jogo, e quer deixar a parte de inteligência artificial configurável. Você poderia criar uma Abstract Factory assim:
Dessa forma, você poderia variar as classes de AI em diferentes implementações. Normalmente, as classes num abstract factory trabalham em "harmonia". Por exemplo, o Look And Feel de um botão corresponde ao Look and Feel de um ComboBox, ListBox, etc. Então, uma fábrica abstrata ajuda a ao desenvolvedor entender que existe esse tipo de relacionamento entre as classes.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2007 16:56:25
|
rflprp
GUJ Ranger
Membro desde: 27/04/2005 18:52:49
Mensagens: 822
Offline
|
http://pt.wikipedia.org/wiki/Abstract_Factory
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2007 17:04:37
|
renanpto
JavaEvangelist
![[Avatar]](/images/avatar/35df583a06ef378df8540f6db2d36534.jpg)
Membro desde: 16/04/2007 11:58:32
Mensagens: 458
Localização: Curitiba
Offline
|
Pelo q entendi segundo ViniGodoy, é q o AbstractFactory é responsavel por criar os objetos que tem uma "relacao" entre si. Sendo diferente de factory por que chama o metodo q precisar, nao passando parametro para dizer qual objeto quer criar ???.
Putz, to na empresa nao consigo acessar outros sites.
valeu
|
Sun Certified Java Programmer 5
Oracle Certified Web Component Developer 5
www.devlogic.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2007 17:14:58
|
rflprp
GUJ Ranger
Membro desde: 27/04/2005 18:52:49
Mensagens: 822
Offline
|
Vo quebrar teu galho:
Fonte: Wikipedia
Abstract Factory é um padrão de projeto de software (design pattern em inglês). Este padrão permite a criação de famílias de objetos relacionados ou dependentes, através de uma única interface e sem que a classe concreta seja especificada.
Utilização
O padrão Abstract Factory pode ser utilizado na implementação de um toolkit que disponibilize controles que funcionam em diferentes interfaces gráficas, tal como Motif, GTK+ (GNOME) ou Qt (KDE). Estas GUIs possuem diferentes padrões de controles visuais e, para facilitar a construção de aplicativos que interajam facilmente com diferentes interfaces gráficas, é interessante que se defina interfaces comuns para acesso aos controles, independentemente da GUI utilizada. Este problema pode ser resolvido através uma classe abstrata que declara uma interface genérica para criação dos controles visuais e de uma classe abstrata para criação de cada tipo de controle. O comportamento específico, de cada um dos padrões tecnológicos contemplados, é implementado através de uma classe concreta. O aplicativo, ou "cliente", interage com o toolkit através das classes abstratas sem ter conhecimento da implementação das classes concretas.
Exemplo
Neste exemplo, a classe abstrata WidgetFactory possui duas especializações: MotifWidgetFactory para widgets Motif e QtWidgetFactory para widgets Qt. Essas especializações são classes concretas capazes de "produzir" os elementos da interface gráfica. O cliente do toolkit obtém os elementos gráficos de que necessita através da classe (interface) WidgetFactory sem ter conhecimento das classes concretas. Da mesma maneira, o cliente somente interage com as interfaces que representam os elementos produzidos pela Abstract Factory (no exemplo, a classe Janela e a classe Botao).
Código
Este código, escrito na linguagem Java, mostra a implementação do diagrama mostrado acima. Por uma questão de simplicidade, o código relacionado às janelas é omitido.
Este exemplo imprimiria na tela o texto "Eu sou um botao Motif!" ou "Eu sou um botao Qt!" dependendo do valor retornado pelo método Configuracao.obterInterfaceGraficaAtual(), que descobre a interface gráfica, Motif ou Qt, utilizada pelo sistema.
[]´s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2007 18:03:28
|
renanpto
JavaEvangelist
![[Avatar]](/images/avatar/35df583a06ef378df8540f6db2d36534.jpg)
Membro desde: 16/04/2007 11:58:32
Mensagens: 458
Localização: Curitiba
Offline
|
Po valeu em cara.....
|
Sun Certified Java Programmer 5
Oracle Certified Web Component Developer 5
www.devlogic.com.br |
|
|
 |
|
|