Baixe o app para aproveitar ainda mais
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.
Compartilhar