Pessoal estou desenvolvendo um aplicativo pra nutrição para calcular a Necessidade Energética de cada indivíduo, só que para cada etapa da vida a fórmula de cálculo é uma, ou seja, criança se calcula de uma forma, meninos de outra, adulto de outra, gestante de outra e lactantes de outra e possui alguns outros tipos que vou implementar futuramente. Eu tenho o cadastro do paciente que consta a sua data de nascimento, no momento de realizar o calculo da Necessidade Energética devo saber a idade do paciente (já tenho a classe para isso) e se mulher saber se é gestante ou lactante e então saber em qual dos grupos ele se encaixa. Gostaria de saber a melhor forma de modelar isso, visto que o grupo que a pessoa está varia de acordo com sua idade, ou seja, deve ser escolhido no momento da execução. Se alguem puder dar umas dicas pra gente ir discutindo, seria muito grato.
Quem sabe usar o design pattern “Strategy”.
[quote=jairelton]Quem sabe usar o design pattern “Strategy”.
http://en.wikipedia.org/wiki/Strategy_pattern[/quote]
Valew jairelton, andei lendo o link que me mandou e acho que vou utilizar o Strategy Pattern and OCP, acho q fica mais coeso visto que a faixa etaria é um atributo do paciente. Mas fiquei só com uma dúvida relacionado ao Strategy qual a vantegem de utiliza-lo através de uma classe de contexto?
ao invés de fazer isso:
[code]Context context;
context = new Context(new ConcreteStrategyA());
context.execute();
context = new Context(new ConcreteStrategyB());
context.execute();
context = new ConcreteStrategyC();
context.execute();[/code]
pq não poderia fazer isso:
[code]IStrategy strategy;
strategy = new ConcreteStrategyA();
strategy.execute();
strategy = new ConcreteStrategyB();
strategy.execute();
strategy = new ConcreteStrategyC();
strategy.execute();[/code]
Valew.
Pelo menos o codigo que está na wikipedia, não faz nenhum sentido prático, pelo menos para o padrão “Strategy” não faz sentindo. Somente faz algum sentido para que o Strategy possa ter acesso aos dados, mas nesse caso o exemplo da wikipedia foi muito infeliz, pois não há dados a serem passados para o Strategy.
A não ser que tenha algum motivo que eu desconheça, não vejo motivo pra isso.