Padrões de Projeto (Design patterns) Flashcards
O que são Design Patterns?
Design Patterns, ou padrões de projeto, são soluções gerais para problemas
recorrentes que surgem durante o desenvolvimento de software. Eles são uma forma de capturar as
melhores práticas e experiências de desenvolvedores anteriores, e fornecer uma estrutura validada
para a criação de software de alta qualidade e fácil manutenção. Padrões de projeto facilitam
a reutilização e podem ser usados em muitas situações diferentes.
Explique o padrão Singleton, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Singleton (Único):
O que faz: Garante que uma classe tenha apenas uma instância.
Para que serve: Fornece um ponto de acesso global para essa única instância.
Padrão Criacional
Explique o padrão Factory Method, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Factory Method (Método de Fábrica):
O que faz: Define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar.
Para que serve: Permite a criação de objetos de diferentes tipos, decididos pelas subclasses.
Padrão criacional
Explique o padrão Abstract Factory, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Abstract Factory (Fábrica Abstrata):
O que faz: Oferece uma interface para criar famílias de objetos relacionados sem especificar suas classes concretas.
Para que serve: Permite criar grupos de objetos relacionados de maneira flexível, sem se preocupar com suas implementações específicas.
Padrão criacional
Explique o padrão Builder, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Builder (Construtor):
O que faz: Separa a construção de um objeto complexo de sua representação, permitindo a criação de diferentes representações.
Para que serve: Facilita a construção de objetos complexos passo a passo, com flexibilidade na criação de diferentes versões do mesmo objeto.
Padrão criacional
Explique o padrão Prototype, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Prototype (Protótipo):
O que faz: Permite criar novos objetos copiando um objeto existente, em vez de criar do zero.
Para que serve: Facilita a criação de novos objetos com base em modelos existentes, economizando recursos de inicialização.
Padrão criacional
Explique o padrão Object Pool, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Object Pool (Piscina de Objetos):
O que faz: Evita o custo de inicialização e destruição de objetos, mantendo um conjunto de objetos inicializados prontos para uso.
Para que serve: Melhora o desempenho ao reutilizar objetos em vez de criar e destruir repetidamente, útil em situações onde a criação de objetos é cara.
Padrão criacional
Explique o padrão Adapter , e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Adapter (Adaptador):
O que faz: Permite que classes com interfaces incompatíveis trabalhem juntas, convertendo a interface de uma classe na interface esperada pelos clientes.
Para que serve: Facilita a integração de classes que, de outra forma, não poderiam trabalhar juntas devido a diferenças nas suas interfaces.
Padrão estrutural
Explique o padrão Bridge , e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Bridge (Ponte):
O que faz: Desacopla uma abstração de sua implementação, permitindo que ambas possam variar independentemente.
Para que serve: Proporciona flexibilidade ao separar a abstração da implementação, facilitando a extensão e modificação de ambos independentemente.
Padrão estrutural
Explique o padrão Composite, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Composite (Composto):
O que faz: Compor objetos em estruturas de árvore para representar hierarquias parte-todo, permitindo que os clientes tratem objetos individuais e composições de maneira uniforme.
Para que serve: Permite tratar objetos individuais e suas composições de maneira consistente, facilitando a manipulação de estruturas complexas.
Padrão estrutural
Explique o padrão Decorator, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Decorator (Decorador):
O que faz: Anexa responsabilidades adicionais a um objeto dinamicamente, oferecendo uma alternativa flexível à herança para estender a funcionalidade.
Para que serve: Permite adicionar funcionalidades a objetos de forma dinâmica e flexível, sem a necessidade de criar subclasses para cada combinação de funcionalidades.
Padrão estrutural
Explique o padrão Facade, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Facade (Fachada):
O que faz: Fornece uma interface unificada para um conjunto de interfaces em um subsistema, simplificando o acesso e uso do subsistema.
Para que serve: Oculta a complexidade de um subsistema, oferecendo uma interface simplificada para os clientes.
Padrão estrutural
Explique o padrão Flyweight, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Flyweight (Peso Mosca):
O que faz: Usa compartilhamento para suportar de forma eficiente um grande número de objetos de baixa granularidade, reduzindo a sobrecarga de criação e armazenamento.
Para que serve: Melhora a eficiência ao compartilhar partes comuns entre objetos, reduzindo a quantidade de dados duplicados.
Padrão estrutural
Explique o padrão Proxy, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Proxy (Proxy):
O que faz: Fornece um substituto ou espaço reservado para outro objeto, controlando o acesso ou adicionando outras responsabilidades ao objeto original.
Para que serve: Controla o acesso a um objeto ou adiciona funcionalidades adicionais sem modificar diretamente o objeto original.
Padrão estrutural
Explique o padrão Strategy, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Strategy (Estratégia):
O que faz: Define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis.
Para que serve: Permite que um cliente escolha dinamicamente o algoritmo a ser usado, proporcionando flexibilidade na execução de diferentes estratégias.
Padrão comportamental
Explique o padrão Observer, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Observer (Observador):
O que faz: Estabelece uma dependência um-para-muitos entre objetos, de modo que quando um objeto muda de estado, todos os seus dependentes são notificados.
Para que serve: Facilita a comunicação e atualização entre objetos, sendo útil quando a mudança em um objeto precisa ser refletida em outros objetos.
Padrão comportamental
Explique o padrão State, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
State (Estado):
O que faz: Permite que um objeto altere seu comportamento quando seu estado interno muda.
Para que serve: Facilita a implementação de comportamentos específicos associados a diferentes estados de um objeto, evitando a necessidade de grandes blocos condicionais.
Padrão comportamental
Explique o padrão Command, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Command (Comando):
O que faz: Encapsula uma solicitação como um objeto, permitindo a parametrização de clientes com diferentes solicitações e suporte para operações de desfazer e refazer.
Para que serve: Desacopla o remetente da solicitação do seu receptor, permitindo a execução de comandos sem a necessidade de saber a lógica exata de sua implementação.
Padrão comportamental
Explique o padrão Iterator, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Iterator (Iterador):
O que faz: Fornece uma maneira de acessar elementos de uma coleção de objetos agregados sequencialmente sem expor sua representação subjacente.
Para que serve: Simplifica a iteração sobre elementos de uma coleção, tornando o código mais legível e desacoplando o cliente da implementação da coleção.
Padrão comportamental
Explique o padrão Mediator, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Mediator (Mediador):
O que faz: Define um objeto que encapsula como um conjunto de objetos interage, promovendo o baixo acoplamento e evitando a referência direta entre eles.
Para que serve: Facilita a comunicação entre objetos de um sistema, reduzindo a dependência direta e melhorando a modularidade.
Padrão comportamental
Explique o padrão Memento, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Memento (Memento):
O que faz: Captura e externaliza o estado interno de um objeto sem violar o encapsulamento, permitindo que seja restaurado posteriormente.
Para que serve: Permite salvar e restaurar o estado de um objeto em momentos específicos, útil para implementar operações de desfazer e refazer.
Padrão comportamental
Explique o padrão Method, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Template Method (Método de Modelo):
O que faz: Define o esqueleto de um algoritmo em uma operação, deixando alguns passos para serem definidos pelas subclasses.
Para que serve: Facilita a criação de algoritmos reutilizáveis, com estrutura definida na classe base e detalhes implementados nas subclasses.
Padrão comportamental
Explique o padrão Visitor, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Visitor (Visitante):
O que faz: Representa uma operação a ser executada nos elementos de uma estrutura de objeto, permitindo definir novas operações sem alterar as classes dos elementos.
Para que serve: Permite adicionar novas operações sem modificar a estrutura dos objetos, proporcionando flexibilidade na extensão do código.
Padrão comportamental
Explique o padrão Chain of Responsibility, e a qual padrão ele pertence (Criacional, Estrutural ou Comportamental)
Chain of Responsibility (Cadeia de Responsabilidade):
O que faz: Evita o acoplamento do remetente de uma solicitação ao seu receptor, ao dar a mais de um objeto a oportunidade de tratar a solicitação.
Para que serve: Permite que vários objetos processem uma solicitação, garantindo que ela seja tratada por um objeto apropriado sem a necessidade de conhecer a cadeia completa de responsabilidade.
Padrão comportamental