Comecei a pesquisar recentemente em Design Patterns, e uma coisa que estou codificando se adequaria perfeitamente ao padrão Strategy, exceto por uma pequena diferença.
Essencialmente, alguns (mas não todos) dos meus algoritmos precisam de um ou dois parâmetros extras passados para eles.
Então eu vou precisar
- passar a eles um parâmetro extra quando eu invocar o método de cálculo
ou
- armazená-los como variáveis dentro da classe ConcreteAlgorithm e poder atualizá-los antes que eu chame o algoritmo.
Existe um padrão de design para essa necessidade / Como eu poderia implementar isso enquanto seguia o Padrão de Estratégia?
Eu considerei passar o objeto cliente para todos os algoritmos e armazenar as variáveis lá, usando-o somente quando o algoritmo específico precisar dele. No entanto, acho que isso é difícil de manejar e derrota o objetivo do padrão de estratégia.
Só para esclarecer, estou implementando em Java e, portanto, não tenho o luxo de parâmetros opcionais (o que resolveria isso muito bem).