Skip to content

danillorcb/design-patterns

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 

Repository files navigation

Design Patterns

Padrões de projetos implementados em Java.

Adapter

Tem o objetivo de fazer duas classes/interfaces incompatíveis trabalhem em conjunto através de abstrações para que não haja acoplamento entre elas. Pode ser usado para adaptar um código antigo que não se enquadre ao sistema atual.

Data de hoje

Bridge

Tem o objetivo de fazer a ponte entre dois sistemas/APIs através de abstrações, de forma que não haja acoplamento entre as partes.

Mapas

Builder

Pode ser usado quando a classe tiver muitos atributos ou regras no construtor, facilitando e organizando a construção do objeto em uma nova classe, além de fornecer uma interface mais clara através dos métodos encadeados (method chain).

Nota Fiscal

Chain of Responsability

O padrão pode ser usado quando houver muitas condições, e diante de um encadeamento, o padrão percorre essas condições até encontrar uma que atenda a solicitação. O Chain of Responsability separa as responsabilidades em classes pequenas e enxutas, e ainda provê uma maneira flexível e desacoplada de juntar esses comportamentos novamente.

Tipo de retorno da requisição (XML, CSV, Porcento)

Calculador de Descontos

Command

Pode ser usado quando queremos colocar em fila a execução de vários comandos de um objeto, fazendo com que esses comandos possam ser executados dinamicamente. Outro uso seria uma espécie de transação, onde a sequência de comandos só seria validada ou não, quando fossem executados métodos de rollback ou commit, por exemplo.

Status de um pedido

Decorator

É recomendado o uso quando queremos compor comportamentos a outro comportamento de classes da mesma hierarquia. Isso pode ser definido no momento da instanciação, através do construtor.

Impostos Compostos

Filtro de Conta

Factory

Facilitar a criação de objetos que são complicados. Geralmente é um objeto que não precisa de parâmetros externos a ele para ser criado, a Factory já se encarrega de tudo que precisa para criação e te fornecer o objeto.

Connection

Flyweight

Quando temos uma grande quantidade de objetos similares a serem instanciados repetidamente, é ideal que uma classe seja responsável por esse controle, fazendo cache das instâncias para reuso.

Notas Musicais

Interpreter

Usado quando temos expressões que devem ser avaliadas, e a transformadas em uma estrutura de dados, para depois fazer com que a própria árvore se avalie.

Expressão Matemática

Memento

O padrão faz com que os estados de um objeto sejam mantidos em uma lista/histórico/memória, para futura consulta e restauração dos estados anteriores. Com ele é possível fazer o famoso Ctrl+Z no objeto.

Histórico dos estados de um contrato

Observer

Uma classe Subject é quem mantém os dados compartilhados e uma lista de observadores que compartilham o dado. O Observer faz utilização dos dados compartilhados e deve ser atualizado a cada modificação no Subject. Recomendado quando tiver várias ações que compoem uma regra.

Ações após gerar Nota Fiscal

State

Manter e organizar estados de uma forma simples, separados em classes da mesma hierarquia, abaixo de uma interface que define os métodos que fazem a transição de estado.

Estado da Conta (Positivo/Negativo)

Estados de um orçamento

Strategy

Separa o que muda do que não muda em um software, de modo a evitar que o código tenha propagação de mudanças. Oferece uma maneira flexível para escrever algoritmos e alternar entre eles com base no objeto passado no construtor, fazendo com que a regra fique encapsulada e o cliente não precise conhecer essas regras, apenas saber qual usar.

Impostos dos Funcionários

Tipos de Investimentos

Template Method

Fornece uma maneira abtraída (template) de codificar uma regra baseada em uma interface, deixando as particularidades para as classes filhas que extenderem esse template.

Relatório simples e completo

Máxima e mínima taxação de imposto

Visitor

É usado quando precisamos navegar sobre uma árvore de maneira organizada, realizando alguma tarefa.

Imprimindo a Expressão Matemática

About

Design Patterns com exemplos práticos implementados em Java

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages