DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL
ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!

Artigo Java Magazine 50 - Abstract Factory Aplicado

Artigo publicado pela Java Magazine 50.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

Esse artigo faz parte da revista Java Magazine edição 50. Clique aqui para ler todos os artigos desta edição

 

 Abstract Factory Aplicado

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();

 

"

A exibição deste artigo foi interrompida.

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL
ou 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...
O que você achou deste post?

    2 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Mult-e Desenv. E Consult. Sist. Inf. Ltda
Muito bacana e didático esse artigo. No caso dos fontes, como poderia fazer o download dos mesmos?

Parabéns pelo artigo.
[há +1 ano] - Responder

 

Wesley Yamazack
http://www.devmedia.com.br/revista-java-magazine-edicao-50/8377

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.
[há +1 ano] - Responder
 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03