Skip to content

Strategy GoF

nicacioneto edited this page Jun 23, 2017 · 4 revisions

Histórico da revisão

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

1. Strategy

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.

1.1 Motivação

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.

1.2 Problema Solucionado

O problema a ser selecionado é que o Stragegy irá encapsular os algoritmos ("estratégias") como um objeto para cada tipo de conversão.

2. Modelagem

Adapter

Figura 01 - Modelagem do Strategy

2.1 Detalhes da modelagem

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.

2.2 Detalhes na implementação

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

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

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.

Lenght_Code

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

Area_Code

3. 0 Referências

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.

Clone this wiki locally