21
Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil http://www.as3devs.com.br http://as3devsbr.groups.a dobe.com [email protected] m

Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

Embed Size (px)

Citation preview

Page 1: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

Design Patterns e você.

Jay Moretti - @jay_moretti

Grupo de desenvolvedores Actionscripts do Brasilhttp://www.as3devs.com.br

http://[email protected]

Page 2: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

Este sou eu trabalhando de madrugada.Ignorem a cara de tonto.

Page 3: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

• Programador desde pirralho.

• Programador Flash desde 2004.

• RIA’s, mobile, AIR.

• Pre-release, Flash CS5, Flash Builder.

• FDT Evangelist

• Me demiti da Digitas Brasil pra estudar arte generativa.

Who the fuck am I?

Page 4: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

Não vamos começar falando de Design

Patterns.

Page 5: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

Vamos começar com Programação

Orientada a Objetos

Page 6: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

AbstraçãoAbstração é um modelo, uma idéia, um conceito. É o ponto de partida para algo concreto. Ex: Um veículo.

EncapsulamentoÉ o que define um objeto. Podemos ter rodas, eixo, direção, banco traseiro, retrovisor, mas isso não significa que temos um carro. Só temos as peças. Encapsulamento é isso, é não só ter as peças, mas dizer como elas se relacionam e funcionam juntas para fazer o objeto carro funcionar. Você não precisa saber como a parte de dentro funciona. Você só precisa fazer funcionar. Ex. virar a chave, acelerar, frear, trocar de marcha.

HerançaO melhor jeito de economizar tempo programando. Herança é basicamente compartilhar propriedades, métodos e eventos de outro objeto/classe. Ex: Quando extendemos Sprite, temos todas as propriedades que um Sprite tem. 2 jeitos de se fazer Herança: Interfaces e Classes Abstratas.

PolimorfismoDo grego, “Poli” = muitas, “morfos” = formas. Está diretamente ligado a Herança. É a função de transformar uma coisa em outra.

Page 7: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

Agora sim vamos falar de Design

Patterns.

Page 8: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

Design Patterns são a solução um

problema.

Page 9: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

Programe em cima de uma interface e não de uma implementaçãoOs princípios de Design patterns foram criados para incentivar o REUSO de código. Ou seja, quanto mais flexível seu codígo for, mais fácil será de se administrar mudanças mais tarde.

Use composições e não herançaO outro princípio básico dos Design Patterns é o de se usar objetos específicos para cada coisa e não usar herança. Isso porque quando um objeto herda propriedades e métodos de outro, estas propriedades e métodos passam a ser acessíveis, tornando-o assim, suscetível “Gambiarras”.

Page 10: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

Programe em cima de uma interface e não de uma implementação

O que é Implementação?Implementação é o código em si. O como você aplica uma função de uma interface ou de uma Classe Abstrata.

Porque se programar em cima uma interface e não uma implementação?Dependencia de código. Quando se programa em cima de uma interface, seu código está separado da implementação e não fica dependente da mesma, assim ,se você precisa mudar uma coisa, não afetará as subclasses.

Isso significa não usar classes abstratas?De maneira alguma. Existem vantagens de se usar classes abstratas. Se você não precisa ter independência da classe base, use Interfaces, se não, use classes Abstratas. Tudo depende do tamanho e da necessidade da sua aplicação.

Page 11: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

Use composições e não herança

O que é uma Composição?Vamos explicar usando um exemplo.

Porque se usar composições e não heranças?White-box vs Black-box.

Mas isso não vai contra um dos 4 pricípios de POO?Na verdade não. Você não vai abandonar a aplicação de herança. Ambas devem trabalhar juntas.

Page 12: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

White-boxvs

Black-box

Page 13: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

O que é White-box?O Conceito de white-box define um objeto cujas propriedades e métodos são visíveis, mas nem sempre acessáveis, quando você herda propriedades e métodos de um objeto, elas estarão visíveis e acessíveis para a sua subclasse.

As vantagens?As vantagens de se ter um objeto aberto, está na facilidade de se saber como ele funciona. Você pode ver toda sua estrutura e como ela trabalha para poder implementá-la.

As desvantagens?A maior desvantagem de um objeto aberto é exatamente usar a sua maior vantagem como fraqueza, sabendo como ela funciona você pode delegar uma ação que pode enganar o funcionamento interno do objeto, também conhecido como GAMBIARRA.

Page 14: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

O que é Black-box?O extremo oposto de white-box. Criando uma composição, você tem acesso só aos métodos e propriedades públicas de um objeto, sendo forçado a respeitar os parâmetros do mesmo, não precisando se preocupar com seu funcionamento interno.

As vantagens?Você não precisa se preocupar como funciona. Estabilidade.

As desvantagens?Não consegui achar/pensar em nenhuma desvantagens em usar esse método.

Page 15: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

Escolhendo seu Design Pattern.

Page 16: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

Creational Patterns

Factory MethodSingleton---------------------------------------AbstractLazy InitializationMultitionObject PoolPrototype

Structural PatternsDecoratorAdapterComposite

---------------------------------------BridgeFacadeFlyweightProxyObject PoolPrototype

Behavioral PatternsCommandObserverTemplateStateStrategy

---------------------------------------BlackboardInterpreterIteratorMediatorMementoSpecificationVisitor

E muito mais...

Page 17: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

Agora ignore todos eles.

Page 18: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

WTF?????????

Page 19: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

Exemplo Clássico.

Page 20: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

Referencias

Page 21: Design Patterns e você. Jay Moretti - @jay_moretti Grupo de desenvolvedores Actionscripts do Brasil

Jay MorettiTwitter: @jay_moretti

Skype: jrmoretti

Grupo de desenvolvedores Actionscripts do Brasilhttp://www.as3devs.com.br

http://[email protected]