DESIGN PATTERNS
ABSTRACT FACTORY
&
FACADE
O que é
design patterns ?
Design patterns, traduzido Padrões de projetos, são soluções para
problemas comuns em projetos de software e que independem da
linguagem utilizada.
CATEGORIAS
- Criacionais
- Estruturais
- Comportamentais
Criacionais
Fornecem mecanismos de criação de objetos que aumentam a
flexibilidade e a reutilização de código.
Estruturais
Explicam como montar objetos e classes em estruturas maiores,
enquanto ainda mantém as estruturas flexíveis e eficientes.
Comportamentais
Cuidam da comunicação eficiente e da assinalação de
responsabilidades entre objetos.
ABSTRACT FACTORY
Este padrão permite a criação de famílias de objetos relacionados ou
dependentes por meio de uma única interface e sem que a classe
concreta seja especificada.
Imagine q estamos desenvolvendo um aplicativo que contenha botões
e inputs que precisam ter estilos diferentes para cada sistema
operacional.
A primeira coisa que o padrão Abstract Factory sugere é declarar
explicitamente interfaces para cada produto distinto da família.
O próximo passo é declarar a fábrica abstrata...
Que nada mais é do que uma interface com uma lista de métodos de
criação para todos os produtos que fazem parte da família
Vantagens
-
Você pode ter certeza que os produtos que você obtém de uma
fábrica são compatíveis entre si.
- Princípio de responsabilidade única.
-
Princípio aberto/fechado, ou seja, você pode introduzir novas
variantes de produtos sem quebrar o código cliente existente.
Desvantagens
-
Dificuldade maior em adicionar novos tipos de produtos.
-
O código pode tornar-se mais complicado do que deveria ser, uma
vez que muitas novas interfaces e classes são introduzidas junto
com o padrão.
FACADE
É um padrão de projeto estrutural que fornece uma interface
simplificada para uma biblioteca, um framework, ou qualquer conjunto
complexo de classes.
Imagine que estamos desenvolvendo uma loja virtual.
Para realizar o pedido basico, precisamos:
- Verificar o cliente
- Buscar o produto
- Criar o pedido
Fazer o pedido sem ultilizar o facade
Fazer o pedido ultilizando o facade
Fazer o pedido ultilizando o facade
Vantagens
- Isola a complexidade do código.
- Facilita a manutenção do sistema.
-
Cria pontos de entrada para camadas da aplicação e serviços de
terceiros.
Desvantagens
-
Uma classe que ultiliza o facade pode se tornar um “objeto deus”
acoplado a todas as classes de uma aplicação.