Abstrac Factory Pattern - IME-USP

Propaganda
Abstract Factory Pattern
• Algumas aplicações precisam criar objetos de classes
que podem mudar
• ex: elementos de um sistema GUI.
– Diferentes padrões precisam de objetos de classes
diferentes (motif, presentation manager, etc.)
– uma classe para cada objeto visivel, para cada padrão.
Solução:
• Criar “Fábrica Abstrata”, com métodos para a criação
de cada componente.
• Criar “Componente Abstrato”, com métodos do
componente
• Fábricas concretas retornam elementos dos
componentes concretos
– FabricaComponentesPM, FabricaComponentesMotif
– JanelaPM, JanelaMotif, BarraRolamentoPM,
BarraRolamentoMotif
Aplicabilidade
• sistema precisa ser independente de como seus
produtos são criados, compostos e representados
• configuração do sistema envolve a escolha de uma
entre várias famílias de produtos
• uma família de produtos foi criada para ser usada em
conjunto, e queremos reforçar isso
• desenvolvedor quer criar uma biblioteca de classe de
produtos, mas quer revelar apenas as interfaces.
Estrutura
Participantes
• Fábrica Abstrata: determina interface de criação dos
produtos
• Fábrica Concreta: responsável pela implementação
da criação de objetos concretos
• Produto Abstrato: define interface do produto
• Produto Concreto: define produto a ser criado,
implementa interface do produto abstrato
• Cliente: utiliza interface definida pelos componentes
abstratos do padrão.
Consequências
+ isolamento das classes concretas
+ facilita implementação e troca de famílias de produtos
+ promove consistencia entre produtos da mesma
família
– dificulta adicionar novos produtos: precisamos
aumentar interface da fábrica abstrata e de todas as
suas sublcasses concretas.
Tornando o padrão mais geral: fábricas
extensíveis
• associar a cada produto um código (número, string,
etc.)
• apenas uma operação de criação de produtos,
parametrizada pelo código
• problema: objetos retornados são vistos como tendo
mesma interface em Java
Download