O documento discute padrões de projeto de software, especificamente Abstract Factory, Builder e Prototype. Ele descreve quando cada um deve ser usado, como eles se relacionam e como evoluir entre eles conforme as necessidades de flexibilidade do sistema.
1. Lista de controle
• Decida se "independência de plataforma" e criação de serviços são a atual fonte
de dor.
• Mapear uma matriz de "plataformas" versus "produtos".
• Definir uma interface de fábrica que consiste em um método de fábrica por produto.
• Definir uma classe derivada de fábrica para cada plataforma que encapsula todas as referências ao NovoDefinir uma classe derivada de fábrica para cada plataforma que encapsula todas as referências ao Novo
operador.
• O cliente deve retirar todas as referências a Novo, e usar os métodos de fábrica para criarO cliente deve retirar todas as referências a Novo, e usar os métodos de fábrica para criarO cliente deve retirar todas as referências a Novo, e usar os métodos de fábrica para criar
os objetos de produtos.
Regras de ouro
Às vezes, padrões de criação são concorrentes: há casos em que seja Prototype ou
Abstract Factory poderia ser usado de forma lucrativa.
Em outros momentos, eles são complementory: Abstract Factory pode armazenar um conjunto
de protótipos de que para clonar e retornar objetos produtos, Builder pode usar um dos outros
padrões de implementar que
12 | Abstract Factory
2. Abstract Factory | 13
componentes são construídas. Abstract Factory, Builder, e Prototype pode usar Singleton na
sua implementação.
Abstract Factory, Builder, e Prototype definir um objeto fábrica que é responsável por conhecer
e criar a classe de objetos produtos, e torná-lo um parâmetro do sistema. Abstract Factory tem o
objeto fábrica de produção de objetos de várias classes. Builder tem o objeto de fábrica construção
de um produto complexo de forma incremental usando um protocolo correspondentemente
complexa. Prototype tem o objeto de fábrica (aka protótipo) construção de um produto copiando um
objeto de protótipo.
aulas Abstract Factory são frequentemente implementadas com métodos de fábrica, mas eles também
podem ser implementadas usando Prototype.
Abstract Factory pode ser usado como uma alternativa para a fachada para esconder as classes
específicas da plataforma.
Builder centra-se na construção de uma etapa complexa objeto a passo. Abstract Factory
enfatiza uma família de objetos produtos (simples ou complexos). Builder retorna o produto como
um passo final, mas, tanto quanto o Abstract Factory está em causa, o produto é retornado
imediatamente.
Muitas vezes, projeta começar usando Factory Method (menos complicado, mais
personalizável, subclasses proliferam) e evoluir em direção Abstract Factory, Prototype, ou Builder
(mais flexível, mais complexo) como o designer descobre onde é necessária mais flexibilidade.
3. Adaptador
Intenção
• Converter a interface de uma classe em outra interface esperada pelos clientes. Adapter permite que
classes de trabalhar juntos que não poderia de outro modo, porque de interfaces incompatíveis.
• Enrole uma classe existente com uma nova interface.
• Impedância de corresponder a um componente antigo para um novo sistema
Problema
Um "off the shelf" componente oferece funcionalidade convincente que você
gostaria de reutilizar, mas a sua "visão do mundo" não é compatível com a filosofia e
arquitetura do sistema a ser desenvolvido.
Discussão
Reutilização sempre foi doloroso e indescritível. Uma das razões foi a tribulação de
projetar algo novo, enquanto reutiliza algo velho. Há sempre algo não muito certo entre o
velho eo novo. Pode ser dimensões físicas ou desalinhamento. Pode ser de
temporização ou de sincronização. Pode ser suposições infelizes ou padrões
concorrentes.
É como o problema da inserção de uma nova ficha eléctrica de três pinos numa tomada de dois
pinos de idade - uma espécie de adaptador ou intermediário é necessário.
14 | Adaptador
4. Adaptador é sobre a criação de uma abstração intermediário que traduz, ou mapas, o antigo
componente para o novo sistema. Clientes chamar métodos no objeto adaptador que os
redireciona para chamadas para o componente de legado. Esta estratégia pode ser
implementada com herança ou com agregação.
funções adaptador como um invólucro ou modificador de uma classe existente. Ele fornece um ponto
de vista diferente ou traduzido dessa classe.
Estrutura
Abaixo, um componente do retângulo legado exibição método de espera para receber "x, y, w,Abaixo, um componente do retângulo legado exibição método de espera para receber "x, y, w,Abaixo, um componente do retângulo legado exibição método de espera para receber "x, y, w,
h" parâmetros. Mas o cliente quer passar "x superior esquerdo e y" e "inferior x direita e y". Esta
incongruência pode ser reconciliado por adição de um nível adicional de falta de - ou seja, um
objecto do adaptador.
O adaptador também pode ser pensado como um "wrapper".
Adapter | 15
5. Exemplo
O padrão Adapter permite que classes de outra forma incompatíveis a trabalhar juntos,
convertendo a interface de uma classe em uma interface esperada pelos clientes.
chaves de caixa proporcionam um exemplo do adaptador. Uma tomada atribui a um
roquete, desde que o tamanho da unidade é a mesma. tamanhos de unidade típicos nos
Estados Unidos são 1/2" e 1/4" .
Obviamente, um 1/2" roquete unidade não irá encaixar-se um 1/4" encaixe de accionamento, a menos que uma
placa é usada. Um adaptador de 1/2" a 1/4" tem uma conexão fêmea para se ajustar sobre a 1/2" 1/2" de roquete de
accionamento, e uma conexão macho para se ajustar no 1/4" 1/4" encaixe de accionamento.
16 | Adaptador