Padrões de Projeto Flashcards
(53 cards)
Padrões de Projeto (Design Patterns)
Descrição de uma solução para resolver um problema genérico de projeto em um contexto específico.Um padrão de projeto dá nome, abstrai e identifica os aspectos-chave de uma estrutura de projeto comum para torná-la reutilizável
Quais os benefícios trazidos pela adoção de padrões de projetos?
- Padrões capturam a estrutura estática e a colaboração dinâmica entre objetos participantes no projeto de sistemas.
- São especialmente bons para descrever como e por que resolver problemas não funcionais.
- Facilitam o reuso de soluções arquiteturais que deram certo antes.
- Aumentam a coesão, diminuem o acoplamento.
Padrões de projeto são compostos por quatro elementos essenciais. São eles:
- Nome do padrão
- Problema a ser resolvido
- Solução dada pelo padrão
- Consequências
O catálogo de padrões de projeto (design patterns) do GoF contém 23 padrões e está,
basicamente, dividido em três seções:
- Criação (Creational)
- Estrutura (Structural)
- Comportamento (Behavioral)
Creational, Structural e Behavioral.
Quais são os 5 padrões de criação (creational)?
Classe:
- Factory Method
Objeto:
- Abstract Factory
- Builder
- Prototype
- Sigleton
Classe: Factory Method
Quais são os 7 padrões de estrutura (Structural)?
- Object Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
Classe: Class Adapter
Quais são os 11 padrões de Comportamento (Behavioral)?
Classe:
- Interpreter
- Template Method
Objeto:
- Chain of Responsibility
- Command
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Visitor
Classe: Interpreter Template Method
Padrões de Criação - Abstract Factory
Proporciona uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.
Quando usar Abstract Factory?
- O sistema deve ser configurado com uma de múltiplas famílias de produtos.
- Estes produtos relacionados são projetados para serem utilizados juntos, e você quer garantir essa restrição.
- Você quer fornecer uma biblioteca de classes de produtos e quer revelar somente suas interfaces, não suas implementações.
Padrões de Criação - Builder:
- Separa a construção de um objeto complexo da sua representação, de forma que o mesmo processo possa criar diferentes tipos de representações.
- Creational Pattern Java que tem por objetivo separar a construção de um objeto complexo da sua representação, de tal forma que diversas representações podem ser criadas em razão da necessidade do programa.
Dica: enquanto Abstract Factory enfatiza famílias de objetos, Builder constrói partes de objetos passo a passo.
Quando usar o builder?
Use Builder quando:
- Algoritmo para criar um objeto deve ser independente de suas partes e de como elas são montadas.
Padrões de Criação - Factory Method
Define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar.
Quando usar Factory Method?
Use Factory Method quando:
- Uma classe não pode antecipar a classe de objetos que ela deve criar.
- Uma classe quer que suas subclasses especifiquem os objetos que ela cria.
Padrões de Criação - Prototype:
- Especifica os tipos de objetos para criar uma instância prototípica, e cria novos objetos copiando este protótipo (clonando o objeto original).
Quando usar o padrão prototype?
Use o prototype quando:
- O sistema possui componentes cujo estado inicial tem poucas variações, e é conveniente disponibilizar um conjunto pré estabelecido de protótipos que dão origem aos objetos que compõem o sistema.
Padrões de Criação - Singleton:
- Garante que uma classe tem apenas uma instância e provê um ponto de acesso global a ela.
Quando usar o Singleton?
Use Singleton quando:
- Deve haver exatamente uma instância de uma classe, e ela deve ser acessível aos clientes a partir de um ponto de acesso conhecido.
- Em termos de padrões de criação de projetos, algumas classes, tais como um spooler de impressão ou um sistema de arquivos, devem ser instanciadas uma única vez e prover um ponto de acesso global a esta instância.
Padrões Estruturais - Adapter:
- Converte a interface de uma classe em outra interface que normalmente não poderiam trabalhar juntas.
- É utilizado para permitir que dois objetos se comuniquem mesmo que tenham interfaces incompatíveis
Quando usar Adapter?
Use o Adapter quando:
- Você quer usar uma classe existente, e sua interface não é adequada àquela que você precisa.
Padrões Estruturais - Bridge:
Desacopla uma interface de sua implementação, de forma que elas possam variar independentemente.
Quando usar Bridge?
Use o Bridge quando:
- Você quer evitar um vínculo entre a abstração e a implementação.
- Mudanças na implementação de uma abstração não deveriam ter impacto nos clientes, isto é, seu código não deveria ser recompilado.
Padrões Estruturais - Composite:
Compõe zero ou mais objetos similares de forma que eles possam ser manipulados
como um só.
Quando usar Composite?
Use Composite quando:
* Você quer representar hierarquias parte-todo de objetos.
* Você quer que o cliente ignore a diferença entre objetos compostos e objetos individuais.
Padrões Estruturais - Decorator:
- Anexa responsabilidades adicionais a um objeto dinamicamente.
- Decoradores fornecem uma alternativa flexível em relação a herança para estender funcionalidades.