Design Partners Flashcards

1
Q

Quais as 3 classificações dos padrões de projeto?

A
  • Criação: objetivo de abstrair a instanciação de objetos.
  • Estruturais: organizar a estrutura das classes e os relacionamentos entre classes e objetos.
  • Comportamentais: atuam diretamente na delegação de responsabilidades, definindo como os objetos devem se comportar e se comunicar.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quais os padrões de criação?

A

Abstract Factory - Um método Factory é um método que fabrica objetos de um tipo particular; Um objeto Factory é um objeto que encapsula métodos Factory.

Builder - Separa a construção de um objeto complexo da sua representação, de forma que o mesmo processo de construção possa criar diferentes representações.

Factory Method - É uma interface para instanciação de objetos que mantém isoladas as classes concretas usadas da requisição da criação destes objetos.

Prototype - O padrão Prototype fornece uma outra maneira de se construir objetos de tipos arbitrários.

Singleton - Garante que para uma classe específica só possa existir uma única instância, a qual é acessível de forma global e uniforme.

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

Quais os padrões estruturais?

A

Adapter - Permite que dois objetos se comuniquem mesmo que tenham interfaces incompatíveis.

Bridge - Desacopla a interface da implementação ; Ocultação de detalhes de implementação dos clientes.

Composite - lida com uma estrutura de elementos agrupada hierarquicamente (não como meras coleções).

Decorator - Atribui responsabilidade adicionais a um objeto dinamicamente. O Decorator fornece uma alternativa flexível a subclasses para a extensão da funcionalidade.

Facade - Interface unificada para um subsistema ; Torna o subsistema mais fácil de usar.

Flyweight - Usa compartilhamento para dar suporte a vários objetos de forma eficiente.

Proxy - Fornece um objeto representante ou procurador de outro objeto para controlar o acesso ao mesmo.

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

O que são anti-patterns?

A

São soluções recorrentes para problemas comuns que, na prática, causam mais problemas do que resolvem. Ou seja, são más práticas que podem parecer boas ideias no início, mas que acabam gerando código confuso, difícil de manter ou com baixo desempenho.

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

Exemplos de anti-patterns

A

<ul>
<li><strong>God Object (Objeto Deus)</strong>
<ul>
<li>Problema: Criar uma classe que faz "tudo" dentro do sistema, acumulando muitas responsabilidades.</li>
</ul>
</li>
<li><strong>Spaghetti Code (C&oacute;digo Espaguete)</strong>
<ul>
<li>Problema: C&oacute;digo sem organiza&ccedil;&atilde;o, com l&oacute;gica confusa e interdependente.</li>
</ul>
</li>
<li><strong>Copy-Paste Programming</strong>
<ul>
<li>Problema: Copiar e colar c&oacute;digo repetidamente sem refatorar.</li>
</ul>
</li>
<li><strong>Cargo Cult Programming</strong>
<ul>
<li>Problema: Implementar padr&otilde;es ou tecnologias sem entender o motivo, apenas porque s&atilde;o populares.</li>
</ul>
</li>
<li><strong>Golden Hammer (Martelo de Ouro)</strong>
<ul>
<li>Problema: Tentar resolver todo tipo de problema com a mesma ferramenta ou tecnologia.</li>
</ul>
</li>
<li><strong>Hardcoded Values</strong>
<ul>
<li>Uso de valores fixos dentro do c&oacute;digo em vez de vari&aacute;veis configur&aacute;veis.</li>
</ul>
</li>
<li><strong>Magic Number</strong>
<ul>
<li>Uso de n&uacute;meros aleat&oacute;rios no c&oacute;digo sem explica&ccedil;&atilde;o.</li>
</ul>
</li>
</ul>

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

Quais os padrões comportamentais?

A

<ul>
<li><strong>Chain of Responsability</strong>
<ul>
<li>Evita o acoplamento do remetente de uma solicita&ccedil;&atilde;o aoseu receptor. Encadeia os objetos receptores, passando asolicita&ccedil;&atilde;o ao longo da cadeia at&eacute; que um objeto a trate.</li>
</ul>
</li>
<li><strong>Command</strong>
<ul>
<li>Encapsula uma requisi&ccedil;&atilde;o como um objeto, deixando-o,dessa forma, parametrizar os clientes com diferentesrequisi&ccedil;&otilde;es.</li>
</ul>
</li>
<li><strong>Iterator</strong>
<ul>
<li>Fornece um meio de acessar sequencialmente oselementos de um objeto agregado sem expor a suarepresenta&ccedil;&atilde;o subjacente.</li>
</ul>
</li>
<li><strong>Mediator</strong>
<ul>
<li>Define um objeto que encapsula a forma como umconjunto de objetos interage. Promove o acoplamentofraco ao evitar que os objetos se refiram explicitamenteuns aos outros.</li>
</ul>
</li>
<li><strong>Memento</strong>
<ul>
<li>Define uma depend&ecirc;ncia entre objetos de forma quequando um objeto muda de estado, todos os seusdependentes s&atilde;o notificados e atualizadosautomaticamente.</li>
</ul>
</li>
<li><strong>Observer</strong>
<ul>
<li>Define uma depend&ecirc;ncia entre objetos de forma quequando um objeto muda de estado, todos os seusdependentes s&atilde;o notificados e atualizadosautomaticamente.</li>
</ul>
</li>
<li><strong>State</strong>
<ul>
<li>Permite que um objeto mude o seu comportamentoquando o seu estado interno mudar. O objeto parecer&aacute; termudado de classe.</li>
</ul>
</li>
<li><strong>Strategy</strong>
<ul>
<li>Define uma fam&iacute;lia de algoritmos, encapsula cada um, efaz deles intercambi&aacute;veis.</li>
</ul>
</li>
<li><strong>Visitor</strong>
<ul>
<li>Representa uma opera&ccedil;&atilde;o a ser executada sobre oselementos da estrutura de um objeto. Permite definir umanova opera&ccedil;&atilde;o sem mudar as classes dos elementos sobreos quais opera.</li>
</ul>
</li>
</ul>

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