Padrão de Projeto Strategy
Linguagem de Programação
Padrões de Projeto
Strategy
Prof. Alexandre Vidal
DEINF-UFMA
Ciência da Computação
Tópicos Avançados em
Linguagem de Programação
●
Strategy
–
Classificação:
●
●
–
Propósito: Comportamental
Escopo: Objetos
Intenção:
●
–
define uma família de algoritmos, encapsula cada algoritmo e os torna intercambiáveis, permitindo que o algoritmo varie independente dos clientes que o utilizam.
a.k.a.:
●
Policy
Tópicos Avançados em
Linguagem de Programação
●
Strategy
–
Motivação:
●
●
clientes que necessitam de diferentes algoritmos se tornam mais complexos se os incluirem em seu código; diferentes algoritmos são adequados em diferentes situações na resolução de um mesmo problema; Tópicos Avançados em
Linguagem de Programação
●
Strategy
–
Aplicabilidade (use Strategy quando):
●
●
●
●
muitas classes relacionadas diferem somente no seu comportamento; você necessita de variantes de um algoritmo; um algoritmo usa dados sobre os quais o cliente não precisa ter conhecimento; comandos condicionais relacionados para escolher entre muitos comportamentos de uma classe podem ser movidos para sua própria classe
Strategy
Tópicos Avançados em
Linguagem de Programação
●
Strategy
–
Estrutura
Tópicos Avançados em
Linguagem de Programação
●
Strategy
–
Participantes
●
●
●
Strategy: define uma interface comum para todos os algoritmos suportados;
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.
Tópicos Avançados em
Linguagem de Programação
●
Strategy
–
Colaborações
●
●
Strategy e Context interagem para implementar o algoritmo escolhido; os clientes usualmente criam e passam um objeto