Padrões de Projeto Aula 3 – Padrão Strategy
Resumo e Revisão Padrões de Projeto - Strategy Padrão Strategy
Strategy Definição: Quando usar? Tipo de padrão? Como? Padrões de Projeto - Strategy Def: padrão que permite que o comportamento de uma classe (i.e., seu algoritmo) seja mudado em tempo de execução. Quando usar? Quando o algoritmo a ser usado deve ser escolhido em tempo de execução. Tipo de padrão? Comportamental (existem os de criação, comportamentais e estruturais) Como? Composição + Interfaces Programar para superclasses! Por que? Com a variável de referência de uma superclasse nós podemos instanciar objetos de sub-classe (que encapsulam diferentes algoritmos/estratégias) e atribuir a essa referência em tempo de execução. Com isto a estratégia é mudada.
Terminologia e Estrutura interface Strategy class Context Padrões de Projeto - Strategy
Xadrez Interface Strategy: Class Context: or Class Piece: Main? +move() Class Context: or Class Piece: -Strategy strategy Main? Padrões de Projeto - Strategy Quais os tipos de movimento nós temos no xadrez? Quais peças? Como ficaria o Main?
Mortal Kombat Padrões de Projeto - Strategy ShootBehavior ShootWithArrow implements ShootBehavior nightwolf ShootWithGun implements ShootBehavior stryker, erronblack CastMagicBehavior CastFireball implements CastMagicBehavior liu-kang, shang-tsung CastIce implements CastMagicBehavior sub-zero Class Context ou Class Fighter -ShootBehavior shooter -CastMagicBehavior magic -shoot() -castMagic() -punch() -kick() -move() +doSomething(Input[] input)
Padrões de Projeto - Strategy
Compression tool file compression tool - where we create either zip or rar files Padrões de Projeto - Strategy CompressionStrategy +compressFiles(ArrayList<File> files): void ZipCompressionStrategy implements CompressionStrategy RarCompressionStrategy implements CompressionStrategy CompressionContext
Referências O capítulo 1 do livro “Padrões de Projeto – Use a Cabeça!”; http://java67.blogspot.com.br/2014/12/strategy-pattern-in-java-with-sample.html https://dzone.com/articles/design-patterns-strategy interessante para um “quickstart” em um padrão Padrões de Projeto - Strategy