Boa tarde! Qual seria a melhor forma de aplicar o design pattern Strategy sendo que, por exemplo, teremos um cargo_id
vindo da base de dados que representará o Cargo de um funcionário (por exemplo).
Pelo o que pesquisei aqui, a moçada usa um Factory para criar a instância de cada cargo, algo do tipo:
class CargoFactory
{
public static function create(int $cargoId)
{
switch($cargoId) {
case 1 :
return new Diretor;
case 2 :
return new Supervisor;
case 3 :
return new Coordenador;
case 4 :
return new Funcionario;
default :
throw new RuntimeException('Não foi possível criar a instância do funcionário utilizando o cargoId ' . $cargoId);
}
}
}
Tranquilo, aqui funciona deboa! Mas ainda sim, não estamos com if's (nesse caso switch/case
? Toda vez que for criado um cargo terei que vir aqui e adicionar mais um case
.
Existe uma forma melhor para fazer isso?