O documento apresenta uma palestra sobre padrões de projeto, definindo-os como soluções para problemas comuns na programação orientada a objetos. Apresenta as três principais classes de padrões - Criação, Estruturais e Comportamentais - e exemplifica três padrões: Builder para construção flexível de objetos complexos, Decorator para adicionar responsabilidades dinamicamente e Strategy para variar algoritmos de forma independente. A conclusão reforça a importância dos padrões sem seguí-los rigidamente.
2. Agenda.
1. O que são?
2. Por que utilizar?
3. Por que aprender?
4. Classes de padrões
5. Builder pattern
6. Decorator pattern
7. Strategy pattern
8. Conclusão
5. "Projetar software orientado a objetos é duro, mas
projetar software reutilizável orientado a objetos é ainda
mais duro"
Erich Gamma; Design Patterns: Elements of Reusable Object-Oriented Software, p.18
6. ● Soluções para problemas recorrentes.
● Não é um pedaço de código, mas um conceito geral.
O que são?
7. "Cada padrão descreve um problema no nosso
ambiente e o núcleo da sua solução, de tal forma que
você possa usar esta solução mais de um milhão de
vezes, sem nunca fazê-lo da mesma maneira."
Christopher Alexander; A Pattern Language: Towns, Buildings, Construction, p.77
9. ● Criam um vocabulário comum de projeto.
● Auxiliam na documentação e aprendizagem.
● Pode reduzir o número de refatorações.
● Tornam o sistema reutilizável.
Por que padrões de projeto?
13. Classes de padrões
Criação Estruturais Comportamentais
Processo de criação dos
objetos.
Composição de objetos
para obter novas
funcionalidades.
Atribuições de
responsabilidades entre
os objetos.
¹ De acordo com o GoF
14. ● Ajudam a tornar um sistema independente de como seus objetos são
criados, compostos e representados.
● Abstraem o processo de instanciação, delegando a outro objeto.
● Padrões de criação dão muita flexibilidade em o que é criado, quem cria,
como e quando é criado.
● Evoluem no sentido de depender mais da composição de objetos do que da
herança.
Padrões de criação
15. ● Factory Method
● Abstract Factory
● Builder
● Prototype
● Singleton
Padrões de criação
16. ● Se preocupam com a forma como classes e objetos são compostos para
formar estruturas maiores.
● Descrevem maneiras de como compor objetos para obter novas
funcionalidades.
● Muita flexibilidade com composição em tempo de execução.
Padrões estruturais
18. ● Se preocupam com algoritmos e a atribuição de responsabilidades entre
classes.
● Facilitam a comunicação entre os objetos, distribuindo as responsabilidades
e definindo a comunicação interna.
Padrões comportamentais
22. ● É um wrapper ao redor de todos os possíveis parâmetros.
● Constrói um objeto sob demanda.
● Por que?
○ Permite variar a representação interna do objeto.
○ Dá controle total na criação de um objeto.
Builder pattern
28. ● Insere responsabilidades adicionais a objetos individuais em tempo de
execução.
● Por que?
○ Evita subclasses para suportar cada combinação possível.
○ Executa e repassa a responsabilidade.
Decorator pattern
33. Problema
● Aumento do arquivo
● Difícil manutenção
● Difícil entendimento
Strategy pattern
34. ● Permite que o algoritmo varie independentemente dos clientes que o utilizam.
● Por que?
○ Pode ajudar a remover comandos condicionais.
○ Fácil entendimento.
Strategy pattern
38. ● Não é bala de prata.
● Entenda o problema.
● Não decore padrões, mas lembre que eles existem.
Conclusão
39. Timeless
programming classic
for the ages
“Twenty Two years since the book's
publication it remains incredibly relevant.
In the beginning I was surprised the
discussion in 1994 was this high level.”
Recomendação de livro
40. Recomendação de livro
“Everything is well explained and I like the
way all basics are introduced first (UML,
SOLID) and then we can go on each
design pattern and play with it.”