Nome
e Classificação do Padrão
Builder – Padrão de criação
Intenção
e objetivo
Possui o objetivo de reduzir a
complexidade de uma classe movendo a lógica de construção de uma classe para um
objeto externo separando a construção deste objeto com a sua respectiva
representação produzindo diferentes representações.
Criar passo a passo objetos mais
complexos
Motivação
Este padrão de criação traz a
possibilidade de separar da classe os seus métodos numa outra estrutura de
dados da mesma forma que possibilita também a utilização dessa estrutura para
coletar as opções de um cliente e construir objetos diferentes, através somente
dos parâmetros necessários para este desenvolvimento.
Apenas conhecendo os atributos da
classe em questão pode instanciar objetos diferentes baseado nos métodos de criação e
comportamento de uma classe
Aplicabilidade
Deve permitir diferentes representações
para o objeto que é construído
É aplicavel para simplificar um
algoritmo complexo, deve ser independente das partes que compõem o objeto e de
como elas são.
Participantes
Builder
Interface abstrata utilizada para criação de objetos no caso podem ser produtos.
Concrete Builder
Realiza a implementação do Builder. É um objeto que construi outros objetos.
Director
A classe Director é responsável pela manutenção da sequencia correta de criação do objeto, recebe a classe Concrete Builder como paramentro e realiza as operações necessárias.
Product
O objeto final que é criado pelo Diretor usando a classe Builder
Builder
Interface abstrata utilizada para criação de objetos no caso podem ser produtos.
Concrete Builder
Realiza a implementação do Builder. É um objeto que construi outros objetos.
Director
A classe Director é responsável pela manutenção da sequencia correta de criação do objeto, recebe a classe Concrete Builder como paramentro e realiza as operações necessárias.
Product
O objeto final que é criado pelo Diretor usando a classe Builder
Colaborações
O usuário cria o objeto Director e o
configura com o objeto Builder desejado
Director notifica
o construtor sempre que uma parte do produto deve ser construída ou convertida
Builder
trata solicitações do diretor e acrescenta partes ao produto
O cliente recupera o produto do construtor
Consequencia
Vantagens [Metsker,
2004]:
Redução da extensão e da complexidade de uma
classe;
Independência entre a representação de um
objeto e a sua construção;
Criação de regras graduais de construção para
um objeto;
Geração de construções diversificadas de um
tipo de objeto, ou de construções de objetos diversificados entre si, a
partir de um construtor-base;
Desvantagem:
Por ser bastante flexível, este padrão só
apresentará desvantagem se o seu construtor-base for mal planejado, o que
poderia resultar em construções redundantes ou com baixo aproveitamento
operacional.
Implementação
Processo de produção de uma pizza
Normalmente em pizzarias o processo de fabricação possui três parâmetros específicos a massa, o molho e a cobertura
Normalmente em pizzarias o processo de fabricação possui três parâmetros específicos a massa, o molho e a cobertura
A classe PizzaBuilder penas disponibiliza constantes que são utilizadas de maneira
recorrente na aplicação, de maneira que podem ser acessadas pelas classes que a
implementam.
As classes dos tipos de pizza realizam a implementação do Builder.
A classe Garconete é responsável pela manutenção da sequencia
correta de criação do objeto, recebe o pedido como parametro e realiza as
operações necessárias.
A classe pizza é o objeto final que é criado pela classe Garconete usando
a classe PizzaBuilder
Exemplos de Código
Link do projeto com o padrão Builder
http://www.4shared.com/zip/bCoRDsGr/PizzaBuilder.html
Link do projeto sem o padrão Builder
http://www.4shared.com/zip/6E5Hn9T9/Projeto_PizzaBuider_sem_o_patt.html
Usos Conhecidos
Construção de árvores de análise sintática
Classes que funcionam ao mesmo tempo como
Builder e
Director para criar sub-classes delas mesmas
Padrões
relacionados
Abstract
Factory
Composite

Nenhum comentário:
Postar um comentário