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
Q

Quando usar o Decorator?

A

Use o Decorator quando:
- Quiser adicionar responsabilidades a objetos dinamicamente.
- Quando a extensão por subclasses é impraticável.

26
Q

Padrões Estruturais - Proxy:

A

Provê um substituto ou ponto através do qual um objeto possa controlar o acesso a
outro.

27
Q

Quando usar Proxy?

A

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
Q

Padrões Estruturais - Façade:

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

Quando usar Façade?

A

Use o Façade quando
- Você quiser prover uma interface simples para um subsistema complexo.

30
Q

Padrões Estruturais - Flyweight:

A

Usa compartilhamento para suportar grandes quantidades de objetos, de granularidade fina (que possuem poucas responsabilidades), de maneira eficiente.

31
Q

Quando usar Flyweight?

A

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
Q

Padrões Comportamentais - Chain of Responsibility:

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

Quando usar Chain of Responsibility?

A

Use o Chain of Responsibility quando:
* Você quer emitir uma solicitação para um dentre vários objetos, sem especificar explicitamente o receptor.

34
Q

Padrões Comportamentais - Command:

A

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
Q

Quando usar Command?

A

Use o Command para:
* Parametrizar objetos para realizar alguma ação.
* Suportar undo.
* Suportar transações.

36
Q

Padrões Comportamentais - Interpreter:

A

Dada uma linguagem, define uma representação para sua gramática juntamente com um interpretador para as sentenças dessa linguagem.

37
Q

Quando usar Interpreter?

A

Use Interpreter quando:
* Houver uma linguagem para interpretar e você puder representar as sentenças da linguagem como árvores sintáticas abstratas.

38
Q

Padrões Comportamentais - Iterator

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

Quando usar Iterator?

A

Use Iterator quando:
- Você quer acessar o conteúdo de uma coleção sem expor a sua representação interna.

40
Q

Padrões Comportamentais - Mediator:

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

Quando usar Mediator?

A

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
Q

Padrões Comportamentais - Memento:

A

Sem violar o encapsulamento, captura e externaliza o estado interno de um objeto, de forma que ele possa ser recuperado depois.

43
Q

Quando usar Memento?

A

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
Q

Padrões Comportamentais - Observer:

A

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
Q

Quando usar Observer?

A

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
Q

Padrões Comportamentais - State:

A
  • Permite que um objeto mude o seu comportamento quando o seu estado interno mudar.
  • O objeto parecerá ter mudado de classe.
47
Q

Quando usar State?

A

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
Q

Padrões Cpmportamentais - Strategy:

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

Quando usar Strategy?

A

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
Q

Padrões Comportamentais - Template Method:

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

Quando usar Template Method?

A

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
Q

Padrões Comportamentais - Visitor:

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

Quando usar Visitor?

A

Use Visitor quando:
- Muitas operações distintas e não relacionadas precisarem ser executadas sobre uma estrutura de objetos.