Dúvidas Análise e Orientação a Objetos

3 respostas
R

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.

3 Respostas

J

Quem sabe usar o design pattern “Strategy”.

R
jairelton:
Quem sabe usar o design pattern "Strategy".

http://en.wikipedia.org/wiki/Strategy_pattern

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:
Context context;

    context = new Context(new ConcreteStrategyA());
    context.execute();
 
    context = new Context(new ConcreteStrategyB());
    context.execute();
 
    context = new ConcreteStrategyC();
    context.execute();
pq não poderia fazer isso:
IStrategy strategy;

    strategy = new ConcreteStrategyA();
    strategy.execute();
 
    strategy = new ConcreteStrategyB();
    strategy.execute();
 
    strategy = new ConcreteStrategyC();
    strategy.execute();

Valew.

J

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.

Criado 5 de março de 2008
Ultima resposta 6 de mar. de 2008
Respostas 3
Participantes 2