Abstract Factory
0821369 – Gustavo Lopes Mourad
Propósito
• Padrão de Criação
• “Fornecer uma interface para criação de famílias de objetos
relacionados ou dependentes sem especificar classes
concretas.”
• Conhecido também como Kit
05/11/2015
Gustavo Lopes Mourad © LES/PUC-Rio
2
Motivação
• Como garantir uma interface que funcione para diversos
“look-and-feels” (Motif, Qt (KDE), Windows, etc.) ?
05/11/2015
Gustavo Lopes Mourad © LES/PUC-Rio
3
Aplicabilidade
• Diminuir acoplamento entre sistemas
• Revelar somente as interfaces (sem as implementações) ao
disponibilizar uma API
• Garantir que uma família de objetos seja sempre utilizada
em conjunto
05/11/2015
Gustavo Lopes Mourad © LES/PUC-Rio
4
Estrutura
• Diagrama de classes
05/11/2015
Gustavo Lopes Mourad © LES/PUC-Rio
5
Participantes e Colaborações
• Participantes
– Fábrica Abstrata – Interface para operações que criam Objetosproduto abstratos
– Fábrica Concreta – Implementa a Fábrica Abstrata.
– Produto Abstrato – Interface para um Objeto-Produto
– Produto Concreto – Implementa um Objeto-Produto a ser
criado
– Cliente – Utiliza as interfaces
• Colaborações
– Abstract Factory delega a criação de novos objetos para
Concrete Factory
– Cada Produto precisa de uma Fábrica específica
05/11/2015
Gustavo Lopes Mourad © LES/PUC-Rio
6
Conseqüencias
• Isolamento das classes concretas
– Diminuição do acoplamento entre sistemas
– Controle sobre criação de novos objetos
• Facilita a troca de implementações
– A troca de implementações não afeta a classe cliente
• Promove harmonia entre objetos
– Assegura que um conjunto de objetos sempre trabalharão da
forma a qual foram projetados
• Diminui a flexibilidade dos objetos criados
– Interface da Fábrica deveria ser extendida
05/11/2015
Gustavo Lopes Mourad © LES/PUC-Rio
7
Exemplo de Código
05/11/2015
Gustavo Lopes Mourad © LES/PUC-Rio
8
Referências
• Gamma, E; Helm, R; Johnson, R; Vlissides, J; Design
Patterns – elements of reusable object-oriented software;
Addison Wesley Longman, Inc., 1995.
• Freeman, E; Freeman, E; Bates, B; Sierra, K; Head First
Design Patterns, O’Reily Media, Inc. 2004.
05/11/2015
Gustavo Lopes Mourad © LES/PUC-Rio
9
Fim
Dúvidas?
05/11/2015
Nome do Autor © LES/PUC-Rio
10
Download

Slides - (LES) da PUC-Rio