Open Closed - Chain Of Responsability - Strategy qual desses usar?
Vou deixar um exemplo básico aqui, porém não estou conseguindo raciocinar qual padrão seria melhor para esse exemplo.
Digamos que eu preciso retornar uma mensagem de acordo com o valor do calculo
function mensagemMassaMagra($sexo, $idade, $valor) {
if ($idade >= 18) {
if ($sexo == "feminino") {
if ($idade <= 39) {
if ($valor < 24.3) {
$this->setMensagem_massamagra("Baixo");
} elseif ($valor <= 30.3) {
$this->setMensagem_massamagra("Normal");
} elseif ($valor <= 35.3) {
$this->setMensagem_massamagra("Alto");
} elseif ($valor >= 35.4) {
$this->setMensagem_massamagra("Muito alto");
}
} elseif ($idade <= 59) {
if ($valor < 24.1) {
$this->setMensagem_massamagra("Baixo");
} elseif ($valor <= 30.1) {
$this->setMensagem_massamagra("Normal");
} elseif ($valor <= 35.1) {
$this->setMensagem_massamagra("Alto");
} elseif ($valor >= 35.2) {
$this->setMensagem_massamagra("Muito alto");
}
} elseif ($idade <= 79) {
if ($valor < 23.9) {
$this->setMensagem_massamagra("Baixo");
} elseif ($valor <= 29.9) {
$this->setMensagem_massamagra("Normal");
} elseif ($valor <= 34.9) {
$this->setMensagem_massamagra("Alto");
} elseif ($valor >= 35) {
$this->setMensagem_massamagra("Muito alto");
}
}
} elseif ($sexo == "masculino") {
if ($idade <= 39) {
if ($valor < 33.3) {
$this->setMensagem_massamagra("Baixo");
} elseif ($valor <= 39.3) {
$this->setMensagem_massamagra("Normal");
} elseif ($valor <= 44.0) {
$this->setMensagem_massamagra("Alto");
} elseif ($valor >= 44.1) {
$this->setMensagem_massamagra("Muito alto");
}
} elseif ($idade <= 59) {
if ($valor < 33.1) {
$this->setMensagem_massamagra("Baixo");
} elseif ($valor <= 39.1) {
$this->setMensagem_massamagra("Normal");
} elseif ($valor <= 43.8) {
$this->setMensagem_massamagra("Alto");
} elseif ($valor >= 43.9) {
$this->setMensagem_massamagra("Muito alto");
}
} elseif ($idade <= 79) {
if ($valor < 32.9) {
$this->setMensagem_massamagra("Baixo");
} elseif ($valor <= 38.9) {
$this->setMensagem_massamagra("Normal");
} elseif ($valor <= 43.6) {
$this->setMensagem_massamagra("Alto");
} elseif ($valor >= 43.7) {
$this->setMensagem_massamagra("Muito alto");
}
}
}
}
return $this->getMensagem_massamagra();
}
O problema é a quantidade de if. Qual seria a melhor fora de colocar em um desses padrões citados e qual seria o melhor para esse exemplo?
Pensei em usar o Chain Of Responsability de acordo com a idade.Discussão (0)
Carregando comentários...