design patterns de uma vez por todas
TRANSCRIPT
![Page 1: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/1.jpg)
Design Patternsde uma vez por todas
![Page 2: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/2.jpg)
Agenda
● Quem?!● O que é design pattern● Gang of Four (GoF)● Tipos de padrões
○ template method○ strategy○ observer○ singleton○ iterator
![Page 3: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/3.jpg)
Quem?!
![Page 4: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/4.jpg)
Quem?!Michael [email protected]/dgmikedgmike.com.br
![Page 5: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/5.jpg)
Quem?!Michael [email protected]/dgmikedgmike.com.br
![Page 6: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/6.jpg)
Quem?!
![Page 7: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/7.jpg)
O que é design pattern?
(…) Design Pattern, descreve uma solução geral reutilizável para um problema recorrente no desenvolvimento de sistemas de software orientados a objetos.
— wikipedia (sic)
![Page 8: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/8.jpg)
Gang of Four (GoF)
![Page 9: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/9.jpg)
Gang of Four (GoF)
![Page 10: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/10.jpg)
Gang of Four (GoF)
![Page 11: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/11.jpg)
Gang of Four (GoF)O Gang of Four são os autores do livro "Design Patterns: Elements of Reusable Object- Oriented Software". Este importante livro descreve várias técnicas de desenvolvimento e armadilhas, além de fornecer vinte e três padrões de projeto de programação orientadas a objeto. Os quatro autores foram Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides.
— Richard Carr (blackwasp.co.uk)
![Page 12: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/12.jpg)
Gang of Four (GoF)
Debate sugerido
![Page 13: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/13.jpg)
Gang of Four (GoF)
Debate sugeridoSepare as coisas que mudam das coisas que são sempre as mesmas
![Page 14: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/14.jpg)
Gang of Four (GoF)
Debate sugeridoPrograme para uma interface e não para uma implementação
![Page 15: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/15.jpg)
Gang of Four (GoF)
Debate sugeridoPrefira composição ao no lugar de herança
![Page 16: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/16.jpg)
Gang of Four (GoF)
Debate sugeridoDelegue, delegue, delegue
![Page 17: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/17.jpg)
● Padrões de Criação○ factory○ builder○ singleton
● Padrões estruturais○ adapter○ bridge○ composite○ decorator○ proxy
● Padrões comportamentais○ command○ interpreter○ iterator○ observer○ strategy○ template method
Tipos de padrões
○ factory method○ prototype
○ facade○ flyweight
○ chain of responsibility
○ mediator○ memento○ state○ visitor
![Page 18: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/18.jpg)
● Padrões de Criação○ factory○ builder○ singleton
● Padrões estruturais○ adapter○ bridge○ composite○ decorator○ proxy
● Padrões comportamentais○ command○ interpreter○ iterator○ observer○ strategy○ template method
Tipos de padrões
○ factory method○ prototype
○ facade○ flyweight
○ chain of responsibility
○ mediator○ memento○ state○ visitor
![Page 19: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/19.jpg)
template method
O script precisa de uma alteração em uma determinada parte do processo para que seja usada de outra forma dependendo de sua apliação
![Page 20: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/20.jpg)
template method
![Page 21: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/21.jpg)
template method
![Page 22: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/22.jpg)
template method
![Page 23: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/23.jpg)
template method
Não permite executar classes sem os mesmos métodos
![Page 24: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/24.jpg)
template method
![Page 25: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/25.jpg)
template method
Não podemos instanciar uma classe abstrata
![Page 26: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/26.jpg)
template method
Não permite CRIAR uma classe sem esses métodos
![Page 27: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/27.jpg)
strategy
Apesar do template method resolver o problema de forma simples e direta às vezes queremos mudar grande parte do script
![Page 28: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/28.jpg)
strategy
![Page 29: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/29.jpg)
strategy
![Page 30: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/30.jpg)
strategy
![Page 31: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/31.jpg)
strategy
![Page 32: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/32.jpg)
observer
Integrar vários objetos a apenas um para que eles executem determinada ação a partir da ação executada pelo primeiro objeto
![Page 33: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/33.jpg)
observer
![Page 34: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/34.jpg)
observer
![Page 35: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/35.jpg)
observer
![Page 36: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/36.jpg)
singleton
Garantir que a aplicação inteira deva possuir apenas uma instancia do objeto, mantendo um ponto global de acesso ao objeto
![Page 37: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/37.jpg)
singleton
![Page 38: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/38.jpg)
singleton
![Page 39: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/39.jpg)
singleton
![Page 40: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/40.jpg)
singleton
![Page 41: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/41.jpg)
singleton
![Page 42: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/42.jpg)
iterator
Criar uma estrutura de objetos similares em forma de coleção a fim de poder acessar todos de uma só vez
![Page 43: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/43.jpg)
iterator
![Page 44: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/44.jpg)
iterator
![Page 45: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/45.jpg)
iterator
![Page 46: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/46.jpg)
iterator
![Page 47: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/47.jpg)
iterator
![Page 48: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/48.jpg)
iterator
![Page 49: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/49.jpg)
![Page 50: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/50.jpg)
referencias
http://php.netDesign Patterns In Ruby — Russ Olsenhttp://blackwasp.co.uk/GofPatterns.aspxhttp://sourcemaking.com/design_patterns/http://pt.wikipedia.org/wiki/Padrão_de_projeto_de_softwarehttp://google.com
http://github.com/dgmike/php-design-patterns
![Page 51: Design patterns de uma vez por todas](https://reader033.vdocuments.com.br/reader033/viewer/2022052907/5590a61e1a28ab73528b458e/html5/thumbnails/51.jpg)
Dúvidas?