Buscar

PADRÃO DE PROJETO STRATEGY

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

PADRÃO DE PROJETO 
PADRÃO DE PROJETO STRATEGY
Sérgio Ademir Rocha do Carmo
Abril / 2016
PADRÃO DE PROJETO STRATEGY
Comportamental de Objetos 
 Permitir a variação dos algoritmos utilizados na resolução de um determinado problema.
Objetivo
Permitir de maneira simples a variação dos algoritmos utilizados na resolução de um determinado problema.
 Deve ser utilizado quando uma classe possuir diversos algoritmos que possam ser utilizados de forma intercambiável (troca, permuta de relações de estado para estado).
 vamos supor que precisamos criar um sistema para calcular e programação de uma calculadora .
Conhecido 
Policy (politica)
PADRÃO DE PROJETO STRATEGY
MOTIVAÇÃO/INTENÇÃO
A motivação em usar o padrão Strategy se dá quando temos em nosso sistema uma lógica condicional, que pode se extensa e cada vez mais sofisticada, tornando-se difícil de manter e de dar manutenção.
 O padrão Strategy ajuda a gerenciar toda essa complexidade imposta pelas lógicas condicionais. 
O padrão Strategy sugere que se produza uma família de classes para cada variação do algoritmo e que se forneça para a classe hospedeira uma instancia de Strategy para a qual ela delegará em tempo de execução.
 
PADRÃO DE PROJETO STRATEGY
APLICABILIDADE
 Esse Padrão é usado 
Classes relacionadas forem diferentes apenas no seu comportamento; O Strategy oferece um meio para configurar a classe com um entre vários comportamentos.
 Precisar de diferentes variações de um mesmo algoritmo.
Algoritmo usa dados que o cliente não deve conhecer.
Classe define muitos comportamentos, e estes aparecem como múltiplas declarações condicionais em suas operações
 Uma classe usa em um programa muitas condições de ( ifs, elses) tornando sua manutenção difícil e complicada. 	Por exemplo uma calculadora:
RResultado = 0,66666666666666667
PADRÃO DE PROJETO STRATEGY
ESTRUTURA
PADRÃO DE PROJETO STRATEGY
PARTICIPANTES
Strategy (Compositor) Define uma interface comum para todos os algoritmos suportados. Context usa esta interface para chamar o algoritmo definido por uma ConcreteStrategy.
ConcreteStrategy (SimpleCompositor, TeXCompositor, ArrayCompositor) Implementa o algoritmo usando a interface de Strategy.
Context (Composition) É configurado com um objeto ConcreteStrategy; mantém uma referência para um objeto Strategy; pode definir uma interface que permite a Strategy acessar seus dados.
PADRÃO DE PROJETO STRATEGY
VANTAGENS
 Reutilização por parte do Context que permite escolher entre uma família de algoritmos que possuem funcionalidades em comum;
Algoritmos em classes Strategy possuem variações do seus algoritmos independentemente do seu contexto, assim é mais fácil utilizá-los, trocá-los, compreende-los e estende-los;
Diminuição ou eliminação da lógica condicional clarificando ainda mais os algoritmos; 
A Strategy permite que se escolham diferentes implementações do mesmo comportamento;
PADRÃO DE PROJETO STRATEGY
DESVANTAGENS
Gera muito arquivos, gera muitas classes, isso para cada estratégia.
Complicação que há de como os algoritmos obtêm ou recebem dados de suas classes de contexto;
 
PADRÃO DE PROJETO STRATEGY
IMPLEMENTAÇÃO / PROBLEMA
Suponha que numa empresa exista um conjunto de cargos e para cada cargo exista regras de cálculo de imposto, determinada porcentagem do salário deve ser retirada de acordo com o salario base do funcionário:
O Desenvolvedor deve ter um imposto de 15% caso seu salario seja maior que R$ 2000,00 e 10% caso contrario. 
O Gerente deve ter um imposto de 20% caso seu salario seja maior que R$ 3500 ,00 e 15% caso contrario.
O DBA deve ter um imposto de 15% caso seu salario seja maior que R$ 2000,00 e 10% caso contrario.
Diagrama de Classe
PADRÃO DE PROJETO STRATEGY
PADÕES RELACIONADOS
Flyweight (187): objetos Strategy geralmente são bons flyweights.
REFERÊNCIAS
GAMMA, Erich.et.al. Padrão de Projeto Soluções Reutilizáveis de Software Orientado a Objetos.5.ed. Porto Alegre: Bookman. 2000.
Disponível em: https://brizeno.wordpres.com/category/padroes-de-projetos/strategyAcesso em 18/04/2016.
Disponível em:<www.vincehuston.org/dp/strategy.html>.Acesso em:21/03/2016.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando