SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
Design
Patterns
Outubro /2019
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
Time.
Felipe Volpatto
Dev
O que são?
1.
"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
● Soluções para problemas recorrentes.
● Não é um pedaço de código, mas um conceito geral.
O que são?
"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
Por que padrões
de projeto?
2.
● 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?
Por que
aprender?
3.
● Ensina a resolver várias situações comuns do dia-a-dia.
● São soluções já testadas.
Por que aprender?
Classes de
padrões
4.
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
● 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
● Factory Method
● Abstract Factory
● Builder
● Prototype
● Singleton
Padrões de criação
● 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
● Adapter
● Bridge
● Composite
● Decorator
● Facade
● Flyweight
● Proxy
Padrões estruturais
● 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
● Chain of Responsibility
● Command
● Iterator
● Mediator
● Memento
Padrões comportamentais
● Observer
● State
● Strategy
● Template Method
● Visitor
Builder Pattern
5.
Problema
● Como construir diferentes representações de um objeto complexo?
Builder pattern
● É 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
Builder pattern
Builder pattern
● Exemplo
Decorator
pattern
6.
Problema
● Como adicionar novas responsabilidades em um objeto dinamicamente?
Decorator pattern
Problema
● Adicionar subclasses não é flexível.
Decorator pattern
● 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
Decorator pattern
Decorator pattern
● Exemplo
Strategy pattern
7.
Problema
● Como adicionar uma nova forma de autenticação?
Strategy pattern
Problema
● Aumento do arquivo
● Difícil manutenção
● Difícil entendimento
Strategy pattern
● Permite que o algoritmo varie independentemente dos clientes que o utilizam.
● Por que?
○ Pode ajudar a remover comandos condicionais.
○ Fácil entendimento.
Strategy pattern
Strategy pattern
Strategy pattern
● Let's check it out
Conclusão
8.
● Não é bala de prata.
● Entenda o problema.
● Não decore padrões, mas lembre que eles existem.
Conclusão
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
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.”
Avalie!
https://tinyurl.com/bt-padrao-projeto
Obrigado.

Mais conteúdo relacionado

Semelhante a Padrões de projeto: Builder, Decorator e Strategy

Semelhante a Padrões de projeto: Builder, Decorator e Strategy (20)

[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
Padrões de projetos
Padrões de projetosPadrões de projetos
Padrões de projetos
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Arquitetura Limpa @ 32º CocoaTalks BH
Arquitetura Limpa @ 32º CocoaTalks BHArquitetura Limpa @ 32º CocoaTalks BH
Arquitetura Limpa @ 32º CocoaTalks BH
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Visao geralti netshoes02
Visao geralti netshoes02Visao geralti netshoes02
Visao geralti netshoes02
 
Visao geralti netshoes02
Visao geralti netshoes02Visao geralti netshoes02
Visao geralti netshoes02
 
Modelagem Ágil
Modelagem ÁgilModelagem Ágil
Modelagem Ágil
 
Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?
 
Introdução ao Ruby on Rails
Introdução ao Ruby on RailsIntrodução ao Ruby on Rails
Introdução ao Ruby on Rails
 
Treinamento DDD .Net
Treinamento DDD .NetTreinamento DDD .Net
Treinamento DDD .Net
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
FDD
FDDFDD
FDD
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmática
 
Mapa de aprendizado Front End
Mapa de aprendizado Front EndMapa de aprendizado Front End
Mapa de aprendizado Front End
 

Padrões de projeto: Builder, Decorator e Strategy

  • 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
  • 8. Por que padrões de projeto? 2.
  • 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?
  • 11. ● Ensina a resolver várias situações comuns do dia-a-dia. ● São soluções já testadas. Por que aprender?
  • 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
  • 17. ● Adapter ● Bridge ● Composite ● Decorator ● Facade ● Flyweight ● Proxy 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
  • 19. ● Chain of Responsibility ● Command ● Iterator ● Mediator ● Memento Padrões comportamentais ● Observer ● State ● Strategy ● Template Method ● Visitor
  • 21. Problema ● Como construir diferentes representações de um objeto complexo? Builder pattern
  • 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
  • 26. Problema ● Como adicionar novas responsabilidades em um objeto dinamicamente? Decorator pattern
  • 27. Problema ● Adicionar subclasses não é flexível. Decorator 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
  • 32. Problema ● Como adicionar uma nova forma de autenticação? Strategy 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.”