Design Patterns
Builder Pattern
Projeto de Sistemas de Software
João Campos
[email protected]
Abril de 2009
Sumário
• Builder
o
o
o
o
o
o
o
o
Propósito
Motivação
Aplicabilidade
Estrutura
Participantes
Colaboradores
Consequência
Exemplo
© LES/PUC-Rio
Design Patterns
1. Abstract Factory
2. Builder
3. Factory Method
4. Prototype
5. Singleton
6. Adapter
7. Bridge
8. Composite
9. Decorator
10.Facade
11.Flyweight
12.Proxy
1. Chain of Responsibility
2. Command
3. Interpreter
4. Iterator
5. Mediator
6. Memento
7. Observer
8. State
9. Strategy
10.Template Method
11.Visitor
Padrões de Criação
Padrões Estruturais
Padrões de Comportamento
© LES/PUC-Rio
Builder
Propósitos
o Encapsular a construção de um objeto (normalmente um
produto).
o Permitir que o objeto (produto) seja construído passo-apasso.
© LES/PUC-Rio
Builder
• Motivação
o
o
o
o
o
o
Considere um exemplo de planejamento de viagem em uma agência de
viagens.
O cliente pede que o agente de viagens crie um pacote de uma semana
na França.
O agente monta o itinerário da viagem, faz as reservas de hotel e
compra os ingressos para diversos eventos, etc.
Cada dia da viagem pode ser configurado de modo diferente dos outros
dias.
A complexidade de se montar um plano de viagens é tratada pelo agente
de viagens, que detém o know-how. O cliente apenas dirige o agente de
viagens (Builder) na construção do plano. O cliente não precisa saber
quais são os hotéis disponíveis e como reservá-los. Não precisa saber
como comprar uma entrada para o Museu do Louvre.
A montagem do plano pode ser feita passo-a-passo ou dia-a-dia e com
muitas variações.
© LES/PUC-Rio
Builder
• Aplicabilidade
o Quando se quer ter a capacidade de construir diferentes tipos de
objetos complexos, mantendo o controle sobre o processo de
construção no código cliente.
© LES/PUC-Rio
Builder
• Estrutura
© LES/PUC-Rio
Builder
• Participantes:
o Builder - interface abstrata para criar objetos (produtos).
o Concrete Builder - provê implementação para o Builder. Constrói
e junta partes para construir objetos.
o Director - responsável por gerenciar a correta sequencia de
criação de objetos.
o Product - o objeto final que será criado pelo Director.
© LES/PUC-Rio
Builder
• Colaboração
Builder
Construtor
Director
ConcreteBuilder
1
Constrói
1
Product
“A collaboration is a group of objects interacting
together to accomplish some functionality”
© LES/PUC-Rio
Builder
• Consequências
o Esconde os detalhes de como o produto é montado.
o Cada Builder específico é independente de qualquer outro e do
resto do programa. Isso aumenta a modularidade.
o Mais controle sobre cada produto final que o Builder constrói.
© LES/PUC-Rio
Builder
• Exemplo
O cliente usa uma
interface abstrata para
montar o plano
O cliente dirige o
builder para a
construção do planner
Builder
Client
constructPlanner()
AbstractBuilder
buildDay()
addHotel()
addReservation()
addSpecialDay()
addTickets()
getVacantionPlanner()
Builder buildDay(date);
Builder.addHotel(date, “Grand
Facadian”);
Builder.addTickets(“Patterns on Ice”)
Planner yourPlanner =
builder getVacationPlanner()
VacationBuilder
buildDay()
addHotel()
addReservation()
O cliente dirige o builder
para criar o planner em um
número de passos e então
chama o método
getVacationPlanner()
addSpecialDay()
addTickets()
getVacantionPlanner()
© LES/PUC-Rio
O builder concreto
cria produtos reais e
os armazena na
“vacation composite
structure”
Builder
• Referências
o
o
o
o
UML 2 for Dummies Por Michael Jesse Chonoles, James A. Schardt
Head First Design Patterns Por Eric Freeman; Elisabeth Freeman; Kathy Sierra;
Bert Bates.
http://en.wikipedia.org/wiki/Builder_pattern
http://www.allapplabs.com/java_design_patterns/builder_pattern.htm
© LES/PUC-Rio
Obrigado pela atenção!
:)
Download

Slides - (LES) da PUC-Rio