Padrões de Projeto Flashcards

1
Q

Padrões de Projeto (Design Patterns)

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quais os benefícios trazidos pela adoção de padrões de projetos?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Padrões de projeto são compostos por quatro elementos essenciais. São eles:

A
  • Nome do padrão
  • Problema a ser resolvido
  • Solução dada pelo padrão
  • Consequências
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

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:

A
  1. Criação (Creational)
  2. Estrutura (Structural)
  3. Comportamento (Behavioral)

Creational, Structural e Behavioral.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quais são os 5 padrões de criação (creational)?

A

Classe:

  • Factory Method

Objeto:

  • Abstract Factory
  • Builder
  • Prototype
  • Sigleton

Classe: Factory Method

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Quais são os 7 padrões de estrutura (Structural)?

A
  • Object Adapter
  • Bridge
  • Composite
  • Decorator
  • Facade
  • Flyweight
  • Proxy

Classe: Class Adapter

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Quais são os 11 padrões de Comportamento (Behavioral)?

A

Classe:

  • Interpreter
  • Template Method

Objeto:

  • Chain of Responsibility
  • Command
  • Iterator
  • Mediator
  • Memento
  • Observer
  • State
  • Strategy
  • Visitor

Classe: Interpreter Template Method

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Padrões de Criação - Abstract Factory

A

Proporciona uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Quando usar Abstract Factory?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Padrões de Criação - Builder:

A
  • 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Quando usar o builder?

A

Use Builder quando:
- Algoritmo para criar um objeto deve ser independente de suas partes e de como elas são montadas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Padrões de Criação - Factory Method

A

Define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Quando usar Factory Method?

A

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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Padrões de Criação - Prototype:

A
  • Especifica os tipos de objetos para criar uma instância prototípica, e cria novos objetos copiando este protótipo (clonando o objeto original).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Quando usar o padrão prototype?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Padrões de Criação - Singleton:

A
  • Garante que uma classe tem apenas uma instância e provê um ponto de acesso global a ela.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Quando usar o Singleton?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Padrões Estruturais - Adapter:

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Quando usar Adapter?

A

Use o Adapter quando:
- Você quer usar uma classe existente, e sua interface não é adequada àquela que você precisa.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Padrões Estruturais - Bridge:

A

Desacopla uma interface de sua implementação, de forma que elas possam variar independentemente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Quando usar Bridge?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Padrões Estruturais - Composite:

A

Compõe zero ou mais objetos similares de forma que eles possam ser manipulados
como um só
.

23
Q

Quando usar Composite?

A

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.

24
Q

Padrões Estruturais - Decorator:

A
  • Anexa responsabilidades adicionais a um objeto dinamicamente.
  • Decoradores fornecem uma alternativa flexível em relação a herança para estender funcionalidades.
25
Quando usar o Decorator?
Use o Decorator quando: - Quiser adicionar responsabilidades a objetos dinamicamente. - Quando a extensão por subclasses é impraticável.
26
Padrões Estruturais - Proxy:
Provê um substituto ou ponto através do qual um objeto possa controlar o acesso a outro.
27
Quando usar Proxy?
Use Proxy quando: * Toda vez que há uma necessidade de uma referência mais versátil ou sofisticada do que um simples ponteiro para um objeto.
28
Padrões Estruturais - Façade:
- Provê uma **interface unificada** para um conjunto de interfaces de um subsistema. - Define uma interface de mais alto nível que torna o subsistema mais fácil de manipular. - Façade oferece uma interface simples para uma coleção de classes.
29
Quando usar Façade?
Use o Façade quando - Você quiser prover uma interface simples para um subsistema complexo.
30
Padrões Estruturais - Flyweight:
Usa compartilhamento para suportar grandes quantidades de objetos, de granularidade fina (que possuem poucas responsabilidades), de maneira eficiente.
31
Quando usar Flyweight?
Use o Flyweight quando: - Uma aplicação utiliza um grande número de objetos e o custo para armazená-los é muito alto. - A maioria dos estados dos objetos pode ser tornada extrínseca.
32
Padrões Comportamentais - Chain of Responsibility:
- **Evita o acoplamento do** remetente de uma solicitação ao seu receptor. - **Encadeia os objetos receptores**, passando a solicitação ao longo da cadeia até que um objeto a trate.
33
Quando usar Chain of Responsibility?
Use o Chain of Responsibility quando: * Você quer emitir uma solicitação para um dentre vários objetos, sem especificar explicitamente o receptor.
34
Padrões Comportamentais - Command:
**Encapsula uma requisição como um objeto**, deixando-o, dessa forma, parametrizar os clientes com **diferentes requisições** e filas, ou façam o registro de log de requisições e deem suporte a operações que podem ser desfeitas.
35
Quando usar Command?
Use o Command para: * Parametrizar objetos para realizar alguma ação. * Suportar undo. * Suportar transações.
36
Padrões Comportamentais - Interpreter:
Dada uma linguagem, define uma **representação para sua gramática** juntamente com um interpretador para as sentenças dessa linguagem.
37
Quando usar Interpreter?
Use Interpreter quando: * Houver uma linguagem para interpretar e você puder representar as sentenças da linguagem como árvores sintáticas abstratas.
38
Padrões Comportamentais - Iterator
- Fornece um meio de **acessar sequencialmente** os elementos de um objeto agregado sem expor a sua representação subjacente. - Permite prover uma interface única para varrer coleções diferentes.
39
Quando usar Iterator?
Use Iterator quando: - Você quer acessar o conteúdo de uma coleção sem expor a sua representação interna.
40
Padrões Comportamentais - Mediator:
- Define um objeto que **encapsula a forma como um conjunto de objetos interage**. - Promove o acoplamento fraco ao evitar que os objetos se refiram explicitamente uns aos outros.
41
Quando usar Mediator?
Use Mediator quando: - Um conjunto de objetos se comunica de maneira bem-definida, porém complexas. - O reuso de um objeto é difícil, porque ele referencia e se comunica com muitos outros objetos. - Um comportamento que está distribuído entre várias classes deveria ser customzável, ou adaptável, sem excessiva especialização em subclasses.
42
Padrões Comportamentais - Memento:
Sem violar o encapsulamento, captura e externaliza o estado interno de um objeto, de forma que ele possa ser recuperado depois.
43
Quando usar Memento?
Use Memento quando: - Uma "fotografia" (parte) do objeto precisa ser salva, de forma que ela possa ser recuperada depois. - Uma interface direta para obtenção do estado exporia detalhes de implementação e romperia o encapsulamento do objeto.
44
Padrões Comportamentais - Observer:
Define uma dependência entre objetos de forma que **quando um objeto muda de estado, todos os seus dependentes são notificados** e atualizados automaticamente.
45
Quando usar Observer?
Use o Observer quando - Quando uma mudança em um objeto requer mudanças em outros objetos e você não sabe quantos objetos serão mudados.
46
Padrões Comportamentais - State:
- Permite que um objeto mude o seu comportamento quando o seu estado interno mudar. - O objeto parecerá ter mudado de classe.
47
Quando usar State?
Use State quando: - O comportamento de um objeto depende do seu estado, e ele deve mudar este comportamento em tempo de execução de acordo com este estado.
48
Padrões Cpmportamentais - Strategy:
- Define uma **família de algoritmos**, encapsula cada um, e faz deles intercambiáveis. - Permite que o algoritmo varie independentemente dos clientes que o utilizam.
49
Quando usar Strategy?
Use Strategy quando: - Várias classes relacionadas diferem apenas em seus comportamentos. - Você precisa de diferentes variantes de um algoritmo. - Uma classe define muitos comportamentos e eles aparecem como declarações condicionais nas suas operações.
50
Padrões Comportamentais - Template Method:
- Define o **esqueleto de um algoritmo** em uma operação, deferindo alguns passos para as subclasses. - Template Method permite que subclasses redefinam certos passos de algum algoritmo sem mudar a estrutura do algoritmo.
51
Quando usar Template Method?
Use Template Method para: - Implementar a parte invariante de um algoritmo uma vez e deixar para as subclasses a implementação do comportamento que pode variar.
52
Padrões Comportamentais - Visitor:
- Representa uma **operação a ser executada sobre os elementos da estrutura de um objeto**. - Permite definir uma nova operação sem mudar as classes dos elementos sobre os quais opera.
53
Quando usar Visitor?
Use Visitor quando: - Muitas operações distintas e não relacionadas precisarem ser executadas sobre uma estrutura de objetos.