Design Patterns
O desenvolvedor está bêbado...
O que são?
"Técnicas de modelagem de classes e objetos que resolvem problemas comuns no desenvolvimento de software."
Exclusivo do Java?
"Utilizado em linguagens orientadas a objetos, como C++, Smalltalk, Java, C#, Golang, etc."
Alguns benefícios?
- Padronização;
- Documentação implícita;
- Comunicação entre desenvolvedores.
Cenário I
"Precisamos garantir que existirá apenas uma instância de uma determinada classe durante o ciclo de vida da aplicação. Nesta instância, guardaremos algumas informações globais."
Singleton
- Única instância;
- Menos objetos de mortalidade infantil;
- Garbage Collector agradece!
O código
Cenário II
"Temos alguns botões no nosso Discman, como o play, pause, stop e record. Como podemos organizar a implementação das regras de negócio de cada um dos botões?"
Command
- Divisão das responsabilidades;
- Uma hierarquia de objetos;
- Popularmente utilizado com Factory Method.
O código
Cenário III
"Nosso controlador não deve saber como construir os comandos, apenas como utilizá-los. O que acham sobre delegarmos a construção dos nossos comandos a outro objeto?"
Factory Method
- Nenhum acoplamento entre a classe PlayerController e seus comandos.
O código
Cenário IV
"Na classe Pedido você implementa o método getTotalComDesconto(). O desconto varia conforme a forma de pagamento escolhida pelo cliente ou o valor total da compra."
Strategy
- Encapsulamento dos algoritmos;
- Isolamento do código que varia da classe Pedido.
O código
Cenário V
"A escola decidiu abrir uma nova turma, porém com um preço promocional. Como podemos reaproveitar o código da classe Turma modificando apenas o método que retorna o valor final, sem utilizar herança?"
Decorator
- Use quando for necessário adicionar responsabilidades;
- Sem herança.
O código
Dúvidas?
Obrigado!
about.me/ricardo.longa
Design Patterns
By Ricardo Longa
Design Patterns
- 1,545