Post on 09-Jul-2015
Universidade Feevale
Alunos: Sérgio Andrigo dos Santos
Gabriel Schmitt Kohlrausch
André Schmitz
Disciplina: Técnicas Avançadas de Programação
Professor: Marcelo Carboni
Outubro, 2010.
Design Patterns
Factory
2
Factory - Definição
• Define uma interface ou classe abstrata para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar.
• Na prática:
É uma forma de criar objetos deixando a decisão de qual classe concreta utilizar, por conta de regras
encapsuladas.
Este padrão estabelece uma forma de desenvolver objetos que são responsáveis pela criação de outros
objetos.
3
Factory - Utilização
• Utilidade:
Quando você precisa criar objetos dinamicamente sem conhecer a classe de implementação.
• Exemplo:Necessidade de ter um objeto de conexão de dados, porém
a classe necessária para instanciar esse objeto depende do banco de dados a ser utilizado.
• Freqüência de uso:– Alta
4
Factory - DiagramaParticipantes:
IProduct: Interface para
produtos que serão criados
ProductA e ProductB: Classes
que vão implementar a
interface Iproduct
Creator: Fornece a criação de
objetos concretos
Client: utiliza o Creator para
obter um objeto concreto do
FactoryMethod
5
Factory – Demo 1
• Problema:
– Considere um mercado de classe alta que estoca e
vende carne de avestruz o ano todo.
– Essa loja possui um gerente de compras (comprador)
que garante o abastecimento o ano todo.
– A cada estação no ano a compra de carne deve ser
feita de uma região diferente:
• Inverno, Outono, Primavera: África do Sul
• Verão: Espanha
– Embora o produto seja rotulado a loja não se
interessa em saber a origem do produto.
6
Factory – Demo 1
• Comparando com o diagrama:
Diagrama Exemplo
Client Loja
Creator Comprador
ProductA Fornecedor de carne da Espanha
ProductB Fornecedor de carne da África do Sul
Iproduct Fornecimento de carnes
7
DEMO 1
8
Factory – Demo 2
• Problema:
– Considere um sistema que tenha a capacidade de se
conectar e executar operações em vários SGDBs.
– Cada SGDB tem suas características próprias como
por exemplo string de conexão, métodos para
comandos sql, métodos para transações
– Devemos ter em todo sistema uma forma única
(objeto concreto) para realizar essas operações.
9
DEMO 2