Design patterns de uma vez por todas

Post on 29-Jun-2015

843 views 0 download

Transcript of Design patterns de uma vez por todas

Design Patternsde uma vez por todas

Agenda

● Quem?!● O que é design pattern● Gang of Four (GoF)● Tipos de padrões

○ template method○ strategy○ observer○ singleton○ iterator

Quem?!

Quem?!Michael Granados@dgmikemeadiciona.com/dgmikedgmike.com.br

Quem?!Michael Granados@dgmikemeadiciona.com/dgmikedgmike.com.br

Quem?!

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)

Gang of Four (GoF)

Gang of Four (GoF)

Gang of Four (GoF)

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)

Gang of Four (GoF)

Debate sugerido

Gang of Four (GoF)

Debate sugeridoSepare as coisas que mudam das coisas que são sempre as mesmas

Gang of Four (GoF)

Debate sugeridoPrograme para uma interface e não para uma implementação

Gang of Four (GoF)

Debate sugeridoPrefira composição ao no lugar de herança

Gang of Four (GoF)

Debate sugeridoDelegue, delegue, delegue

● 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

● 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

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

template method

template method

template method

template method

Não permite executar classes sem os mesmos métodos

template method

template method

Não podemos instanciar uma classe abstrata

template method

Não permite CRIAR uma classe sem esses métodos

strategy

Apesar do template method resolver o problema de forma simples e direta às vezes queremos mudar grande parte do script

strategy

strategy

strategy

strategy

observer

Integrar vários objetos a apenas um para que eles executem determinada ação a partir da ação executada pelo primeiro objeto

observer

observer

observer

singleton

Garantir que a aplicação inteira deva possuir apenas uma instancia do objeto, mantendo um ponto global de acesso ao objeto

singleton

singleton

singleton

singleton

singleton

iterator

Criar uma estrutura de objetos similares em forma de coleção a fim de poder acessar todos de uma só vez

iterator

iterator

iterator

iterator

iterator

iterator

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

Dúvidas?