Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Padrões GoF - Strategy
2
O Padrão Strategy O padrão Strategy é semelhante ao padrão Template
Recordando: Template define em uma classe X um algoritmo composto por vários passos. Alguns desses passos são implementados de forma diferente nas subclasses de X. O padrão Strategy fornece diferentes implementações de um algoritmo para uma classe cliente. A classe cliente usa a implementação mais adequada em um dado instante. GOF Book: “Define a family of algorithms, encapsulate each one, and make them interchangeable. “Strategy lets the algorithm vary independently from clients that use it.”
3
Estrutura do Strategy
4
Objetos Participantes
Strategy: Define uma interface comum para todos os algoritmos suportados. O objeto Context usa essa interface comum para chamar o algoritmo definido (implementado) por um objeto ConcreteStrategy. ConcreteStrategy Implementa o algoritmo usando a interface definida por Strategy Context É configurado com um objeto ConcreteStrategy Mantém uma referência para um objeto Strategy Pode definir uma interface que permite que o objeto Strategy faça acesso aos seus dados.
5
Strategy – exemplo Uma instituição de ensino utiliza uma forma de calcular o grau final de um aluno em uma disciplina cursada. Esse grau é uma letra: A, B, C, D ou E. Além disso, esse grau é calculado a partir de notas atribuídas a avaliações. O projetista identificou que, atualmente, cada nota varia na faixa de 0 até 10. No entanto, identificou que é comum a coordenação modificar a estratégia (algoritmo) de atribuição de graus a partir da notas das avaliações. Já existe uma classe (Participacao) que representa participações de alunos em uma disciplina. Qual o melhor projeto de classes para cálculo do grau?
6
Strategy – exemplo (cont.)
Nessa solução, Participacao é uma classe que representa participações de alunos em uma disciplina e suas correspondentes avaliações em termos de notas. Além disso, a operação calcular retorna o grau do aluno.
7
Strategy – vantagens Uma vantagem dessa solução está na flexibilidade resultante. No exemplo, note que a região de código cliente não precisa ser alterada quando a forma de cálculo de grau tiver que ser alterada. Tudo que a região de código cliente conhece acerca da região de código fornecedora do serviço é que existe uma operação chamada calcular, que realizar o cálculo. A região de código cliente não sabe, e nem precisa saber, qual o objeto especifico que está fornecendo uma implementação dessa operação. O acoplamento abstrato é mantido entre os elementos envolvidos.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.