Design Patterns Flashcards
O que são Design Patterns?
Design Patterns ou padrões de projetos são soluções generalistas para problemas recorrentes durante o desenvolvimento de um software. Não se trata de um framework ou um código pronto, mas de uma definição de alto nível de como um problema comum pode ser solucionado.
Design Patterns?
Design patterns são modelos que já foram utilizados e testados anteriormente, portanto podem representar um bom ganho de produtividade para os desenvolvedores.
Seu uso também contribui para a organização e manutenção de projetos, já que esses padrões se baseiam em baixo acoplamento entre as classes e padronização do código.
Creational Design Patterns
Abstract Factory Builder Factory Method Prototype Singleton
Structural Design Patterns
Adapter Bridge Composite Decorator Façade Flyweight Proxy
Behavioral Patterns
Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor
Padrões arquiteturais
Interceptor Model View Controler (MVC) Model View ViewModel (MVVM) Model View Presenter (MVP) n-tier Specification Publish–subscribe Inversion of control
Outros Design Patterns
Rules Design Patterns Dependency Injection Intercepting filter Lazy loading Mock object Method chaining Inversion of control Unit of Work
Design Pattern Definição
Design patterns ou padrões de design são soluções já testadas para problemas recorrentes no desenvolvimento de software, que deixam seu código mais manutenível e elegante, pois essas soluções se baseiam em um baixo acoplamento.
Padrões do Design Patterns?
Padrões de Criação:Esses padrões de design fornecem uma maneira de criar objetos enquanto ocultam a lógica de criação, em vez de instanciar objetos diretamente usando o operador new. Isso dá ao programa mais flexibilidade para decidir quais objetos precisam ser criados para um determinado caso de uso;
•Padrões Estruturais:Esses padrões de design dizem respeito à classe e à composição do objeto. O conceito de herança é usado para compor interfaces e definir maneiras de compor objetos para obter novas funcionalidades;
•Padrões Comportamentais: Esses padrões de design se preocupam especificamente com a comunicação entre objetos;
Factory/ Fábrica
O padrão de fábrica é um dos padrões de design mais usados em Java. Esse tipo de padrão de design se enquadra no padrão criacional, pois fornece um maneira de criar um objeto;
No padrão Factory, criamos objetos sem expor a lógica de criação ao cliente e nos referimos ao objeto recém-criado usando uma interface comum;
Abstract Factory/ Fábrica Abstrata
Os padrões de fábrica trabalham em torno de uma super-fábrica que cria outras fábricas;
Esta fábrica também é chamada de fábrica de fábricas. Esse tipo de padrão de design se enquadra no padrão criacional, pois fornece um maneira de criar um objeto;
No padrão Abstract Factory, uma interface é responsável por criar uma fábrica de objetos relacionados sem especificar explicitamente suas classes. Cada fábrica gerada pode fornecer os objetos conforme o padrão de fábrica;
Singleton
O padrão Singleton é um dos padrões de design mais simples em Java. Esse tipo de padrão de design se enquadra no padrão criacional;
Esse padrão envolve uma única classe responsável por criar um objeto, assegurando que apenas um único objeto seja criado. Essa classe fornece uma maneira de acessar seu único objeto que pode ser acessado diretamente sem a necessidade de instanciar o objeto da classe;
Builder/ Construtor
O padrão Builder cria um objeto complexo usando objetos simples e usando uma abordagem passo a passo. Esse tipo de padrão de design se enquadra no padrão criacional;
Uma classe Builder cria o objeto final passo a passo. Este construtor é independente de outros objetos;
Prototype/ Protótipo
Padrão de protótipo refere-se à criação de objetos duplicados, mantendo o desempenho em mente. Esse tipo de padrão de design se enquadra no padrão criacional;
Esse padrão envolve a implementação de uma interface de protótipo que informa para criar um clone do objeto atual. Esse padrão é usado quando a criação do objeto diretamente é cara. Por exemplo, um objeto deve ser criado após uma operação cara do banco de dados. Podemos armazenar em cache o objeto, retornar seu clone na próxima solicitação e atualizar o banco de dados conforme e quando necessário, reduzindo assim as chamadas ao banco de dados
Adapter/ Adaptador
O padrão do adaptador funciona como uma ponte entre duas interfaces incompatíveis. Esse tipo de padrão de design se enquadra no padrão estrutural, pois combina a capacidade de duas interfaces independentes;
Esse padrão envolve uma única classe responsável por unir funcionalidades de interfaces independentes ou incompatíveis;
Um exemplo da vida real pode ser um caso de leitor de cartão que atua como um adaptador entre o cartão de memória e um laptop. Você pluga o cartão de memória no leitor de cartões e no leitor de cartões no laptop para que o cartão de memória possa ser lido via laptop;