A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Strategy Projeto de Sistemas de Software Fernando de Freitas Silva.

Apresentações semelhantes


Apresentação em tema: "Strategy Projeto de Sistemas de Software Fernando de Freitas Silva."— Transcrição da apresentação:

1 Strategy Projeto de Sistemas de Software Fernando de Freitas Silva

2 © LES/PUC-Rio Strategy Propósito –Definir uma família de algoritmos, encapsular cada um, e fazê- los intercambiáveis. –Strategy permite que algoritmos variem independentemente entre clientes que os utilizam. Também conhecido como: –Policy

3 Motivação Existem muitos algoritmos para quebrar um texto em linhas. –Separar o algoritmo de quebra de linha do cliente simplifica a codificação do mesmo. –Diferentes algoritmos são apropriados para diferentes aplicações. –Tornar o algoritmo parte do cliente dificulta adição de novos algoritmos. © LES/PUC-Rio

4 Aplicabilidade Muitas classes relacionadas só diferem no comportamento. Você precisa de variantes diferentes de um algoritmo. Um algoritmo usa dados sobre os que os clientes não deveriam saber. Use o padrão Strategy para evitar expor estruturas de dados complexas, específicas do algoritmo. Uma classe define muitos comportamentos, e estes se aparecem como declarações condicionais. © LES/PUC-Rio

5 Estrutura

6 Participantes Strategy –Define uma interface comum para todos os algoritmos suportados. Context usa esta interface para chamar o algoritmo definido por uma ConcreteStrategy. ConcreteStrategy –Implementa o algoritmo usando a interface de Strategy. Context –É 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. © LES/PUC-Rio

7 Colaborações Estratégia e Contexto interagem para implementar o algoritmo escolhido. Um contexto pode passar todos os dados requeridos pelo algoritmo à estratégia quando o algoritmo é chamado. Um contexto remete pede de seus clientes a sua estratégia. Os clientes normalmente criam e passam um objeto de ConcreteStrategy ao contexto; depois disso, clientes interagem exclusivamente com o contexto. © LES/PUC-Rio

8 Conseqüências 1. Famílias de algoritmos relacionados. 2. Uma alternativa para subclassing. 3. Strategy elimina declarações condicionais. 4. Escolhas de implementações. 5. Os clientes devem estar atentos as estratégias existentes. 6. Comunicação de cima entre Estratégia e Contexto. 7. Aumentou número de objetos. © LES/PUC-Rio


Carregar ppt "Strategy Projeto de Sistemas de Software Fernando de Freitas Silva."

Apresentações semelhantes


Anúncios Google