{ "@context": "https://schema.org", "@type": "Organization", "name": "Brainscape", "url": "https://www.brainscape.com/", "logo": "https://www.brainscape.com/pks/images/cms/public-views/shared/Brainscape-logo-c4e172b280b4616f7fda.svg", "sameAs": [ "https://www.facebook.com/Brainscape", "https://x.com/brainscape", "https://www.linkedin.com/company/brainscape", "https://www.instagram.com/brainscape/", "https://www.tiktok.com/@brainscapeu", "https://www.pinterest.com/brainscape/", "https://www.youtube.com/@BrainscapeNY" ], "contactPoint": { "@type": "ContactPoint", "telephone": "(929) 334-4005", "contactType": "customer service", "availableLanguage": ["English"] }, "founder": { "@type": "Person", "name": "Andrew Cohen" }, "description": "Brainscape’s spaced repetition system is proven to DOUBLE learning results! Find, make, and study flashcards online or in our mobile app. Serious learners only.", "address": { "@type": "PostalAddress", "streetAddress": "159 W 25th St, Ste 517", "addressLocality": "New York", "addressRegion": "NY", "postalCode": "10001", "addressCountry": "USA" } }

Motivos de cada padrão de projeto Flashcards

(22 cards)

1
Q

Criar classes que têm métodos em comum.

A

Factory Method.

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

Criar objetos que se enquadram em tipos e categorias.

A

Abstract Factory ou Prototype.

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

Criação de objetos com vários parâmetros opcionais.

A

Builder.

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

Criação de objetos cujo estado inicial não costumar variar muito.

A

Prototype.

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

Ajustar uma classe incompatível. Ex: tem uma biblioteca nova e o seu programa n aceita ela pois é pra uma versão mais antiga.

A

Adapter.

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

A estrutura de um objeto pode se tornar parecida com uma árvore pra baixo e você precisa rodar um comportamento recursivamente sobre todos os componentes de uma árvore de objetos.

A

Composite.

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

Não produzir inúmeras subclasses para suportar cada combinação. Dar funcionalidades apenas a um objeto específico, e não a todos (aí seria herança) e em tempo de execução. Também pode remover ela.

A

Decorator.

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

Executar operação parecida pra objetos com valores de atributos diferentes.

A

Strategy.

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

Tem objetos de determinadas classes de interfaces diferentes e se quer executar diferentes operações nelas, e a adição de novas operações é frequente.

A

Visitor.

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

A operação certa é decidida só vendo o resultado.

A

Chain of responsibility.

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

Tem que minimizar a comunicação com uma parte do código cuja lógica é difícil entender e, consequentemente, seria difícil usar seus recursos diretamente.

A

Facade.

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

Existe muitas dependências entre os clientes e as classes de implementação de uma abstração;

A

Facade.

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

Tem que redirecionar o acesso aos objetos pra, antes, verificar algo: autorização de acesso, tentar uma operação (método) alternativo que pode ser melhor, etc.

A

Proxy.

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

Um método repetido em classes cuja única semelhança é essa e algumas dessas classes já fazem herança, e não pode haver herança múltipla.

A

Command.

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

Precisa manipular os dados de uma lista, fila ou pilha em mais de um ponto no código ou, pior ainda, também precisa realizar algum filtro rápido ou alguma manipulação complexa.

A

Iterator.

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

Separar a lógica da função principal de uma classe.

17
Q

Se um objeto for alterado durante a execução, outros objetos têm que serem avisados e atualizados.

18
Q

A maioria dos métodos têm que selecionar (com muitos if’s ou um grande switch case) uma operação apropriada dependendo do estado atual do objeto, e depois podemos ter que adicionar mais estados e métodos baseados em estados da classe.

19
Q

Definir o esqueleto de um algoritmo usando operações abstratas e, assim, implementar partes invariantes de um algoritmo uma única vez.

A

Template Method.

20
Q

Quer dar à um objeto a funcionalidade de voltar à um estado interno anterior. Ex: lista de pedidos de compras, implementar “undo” à um texto,

21
Q

Há uma loja virtual antiga e na hora de realizar um pedido o cálculo do frete está acoplado, então você tem por exemplo 3 transportadoras e código delas está todo junto. Uma alteração na chamada de alguma transportadora você pode acabar quebrando todo o componente de frete. A implementação é legada e provavelmente refatorar ele seja um trabalho longo e pode ser que você não tenha tempo para isso. O componente de Frete irá virar uma ponte de transferência de dados para o frete de cada transportadora.

22
Q

A instância de um objeto é consideravelmente custosa para o servidor, pois temos pouco recurso de hardware, e você precisa instanciar-lo algumas vezes. São 5, 10 tipos de objetos que necessitam de instância e essa instância é dada seguindo uma condição. É preciso, basicamente, uma junção do padrão Singleton com o padrão Factory.