Quando Utilizar AbstractFactory  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
renanpto
JavaEvangelist
[Avatar]

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
[WWW] [MSN]
ViniGodoy
Moderador
[Avatar]

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
[WWW]
rflprp
GUJ Ranger

Membro desde: 27/04/2005 18:52:49
Mensagens: 822
Offline

http://pt.wikipedia.org/wiki/Abstract_Factory
renanpto
JavaEvangelist
[Avatar]

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
[WWW] [MSN]
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
renanpto
JavaEvangelist
[Avatar]

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
[WWW] [MSN]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team