-
Notifications
You must be signed in to change notification settings - Fork 1
Strategy GoF
| Data | Versão | Modificações | Autor |
|---|---|---|---|
| 17/06/2017 | 1.0 | Estrutura inicial do Documento e escrita dos tópicos | Gesiel Freitas |
| 22/06/2017 | 1.1 | Adicionando tópicos e exemplo de implementação | Nicácio Arruda |
Strategy é um padrão GoF comportamental cuja sua intenção é definir uma família de alogoritmos, encapsular cada uma delas e torná-las intercambiáveis. Strategy permite que o algoritmo varie indepentendemente dos clientes que o utilizam.
A motivação para utilizar esse padrão no projeto InoxConverter se deve ao fato de muitas classes relacionadas(medidas para conversão) diferem entre si somente no seu comportamento. O padrão estrategy fornece uma maneira de configurar uma classe com um dentre varios comportamentos, assim sendo cada classe terá seu proprio comportamento.
O problema a ser selecionado é que o Stragegy irá encapsular os algoritmos ("estratégias") como um objeto para cada tipo de conversão.
Figura 01 - Modelagem do Strategy
A classe converter é a classe abstrata, onde fornece toda a base para as especializações. As classes de especializações, serão responsáveis por determinar seus comportamentos estrategicos de acordo com o seu proposito um exemplo é a classe Length responsável por determinar a estrategia para converter medidas de comprimento.
A classe InoxConverter será a cliente responsável por usar as estratégias determinadas nas especializações da classe abstrata converter.
No trecho de código a seguir vemos a implementação do método convert da classe Converter

No trecho de código a seguir vemos a implementação do método addUnit da classe Converter

No trecho de código a seguir vemos a classe Lenght. Esta classe herda de Converter e especializa o comportamento através da sobrescrita do método initDictionary. Desta forma ela utiliza sua própria estratégia para lidar com seu dicionário de dados.

O mesmo acontece para as demais classes que herdam de Converter e implementam seus dicionários.

1.0 DEVMEDIA: Estudo e Aplicação do Padrão de Projeto Strategy - disponível em http://www.devmedia.com.br/estudo-e-aplicacao-do-padrao-de-projeto-strategy/25856 acessado em 17 de junho de 2017.
2.0 Marcos Brizeno: Mão na Massa Strategy - disponivel em https://brizeno.wordpress.com/category/padroes-de-projeto/strategy/ acessado em 17 de junho de 2017.
