Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Artigo Java Magazine 50 - Abstract Factory Aplicado
Artigo publicado pela Java Magazine 50.
Você não gostou da qualidade deste conteúdo?
(opcional) Você gostaria de comentar o que não lhe agradou?
Use um importante pattern na criação de famílias de objetos
Neste artigo, vamos apresentar o design pattern (padrão de projeto) Abstract Factory, que é utilizado para a criação de um conjunto de objetos relacionados, os quais chamaremos de “família de objetos”. Também construímos um exemplo prático de seu uso, conjuntamente com o popular pattern Data Access Object (DAO).
Introdução
O pattern Abstract Factory foi apresentado pela primeira vez em 1995, na primeira edição do livro conhecido como “Padrões de Projeto” (Design Patterns). Considerado um marco na história do desenvolvimento de software, este livro foi escrito por quatro autores, que depois foram apelidados de “gangue dos quatro” (GoF, de Gang of Four). É utilizado como referência por diversos outros livros e sites dedicados a patterns. Nele são apresentados 23 patterns, classificados em patterns de criação, estruturais e comportamentais. O Abstract Factory é um pattern de criação. Para conhecer um pouco mais sobre patterns, consulte o “Design patterns e o DAO”.
Detalhando o Abstract Factory
A estrutura de tópicos utilizada para apresentação do Abstract Factory neste artigo é uma adaptação daquela seguida no livro do GoF:
• Problema – Descrição do problema que se procura solucionar com o pattern.
• Solução – Breve descrição da estratégia da solução a ser adotada.
• Estrutura – Diagrama de classes mostrando os elementos utilizados na solução.
• Participantes – Descrição de cada um dos elementos apresentados no diagrama criado no tópico Estrutura.
• Colaborações – Diagrama de seqüência apresentando a interação entre os elementos utilizados.
• Conseqüências – Resultados obtidos com a aplicação do pattern.
Problema
Precisamos criar famílias de objetos. Estas famílias são formadas por diversos objetos que podem possuir implementações diferentes. Devemos garantir que o aplicativo utilize a família correta, não misturandoobjetos de famílias diferentes.
Por exemplo, uma família de objetos pode ser o conjunto de DAOs utilizadospor um aplicativo. (Para o leitor não familiarizado com o pattern DAO, o quadro “Design patterns e o DAO” mostra alguns conceitos essenciais.) Podemos ter um conjunto de DAOs implementado para acesso ao banco de dados utilizando JDBC puro e outro implementado o acesso utilizando Hibernate. Podemos ainda ter um conjunto de DAOs utilizando JDBC com consultas SQL otimizadas para o banco de dados Oracle e outro para o MySQL, e outro ainda para o SQLServer – e assim por diante.
A situação que queremos evitar é que parte do aplicativo utilize DAOs de uma família enquanto outra parte utiliza DAOs de outra família. Imagine a situação de um aplicativo de gerenciamento de estoque que deve suportar os bancos de dados Oracle e SQLServer. Suponha que as classes DAO para produtos sejam empresa.oracle.ProdutoDAO e empresa.sqlserver.ProdutoDAO. Não queremos a situação onde a tela de edição utiliza um ProdutoDAO para banco de dados Oracle, enquanto a tela de listagem utiliza um ProdutoDAO para SQLServer, por um descuido do desenvolvedor. Esta situação poderia ocorrer facilmente se tivéssemos o seguinte código:
ProdutoDAO dao = new ProdutoDAO();
"
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Kleber Xavier
Consultor e instrutor da Globalcode, trabalha em desenvolvimento e análise de sistemas há sete anos,possuindo as certificações SCEA-I, SCBCD, SCWCD e SCJP. É graduado pela Escola Politécnica da USP e mestrando em Ciência da Computação no IME-USP. Com mais de 2 mil horas de experiência no ensino de i...
2 COMENTÁRIOS
Parabéns pelo artigo.
Olá pessoal da Mult-e Desenv. E Consult. Sist. Inf. Ltda
Obrigado pelo comentário. Para conseguir fazer o download do post, você deve ir na home da revista, veja neste link : http://www.devmedia.com.br/revista-java-magazine-edicao-50/8377
Na parte superior existe uns botões onde você irá encontrar "download" e/ou "código-fonte".
Qualquer dúvida estamos a disposição.




