Я реализую некоторые методы, которые используют операторы switch для различения разных случаев:
private void doThis(){
switch(command){
case on: {status = doCalculationsA; break;}
case off: {status = doCalculationsB; break;}
case idle: {status = doCalculationsC; break;}
case stdby:{status = doCalculationsD; break;}
}
}
Вышеприведенное прекрасно работает, когда дальше по бизнес-логике я вызываю doThis() внутри других методов, которым нужна функциональность doThis().
Однако в данный момент я немного запутался, как включить другие условия/ограничения, наложенные на каждый случай вышеуказанного переключателя.
Я имею в виду, что когда я вызываю doThis() внутри, скажем, bigOperation(), у меня появляются новые условия, которые нужно применять к каждому случаю переключателя, принадлежащего функции doThis():
Пример логики:
biggerOperation(){
doThat();
doTheOther();
if(somethingIsTrue){
execute "case: on" of doThis()
}
else if(somethingElseIsTrue){
execute "case: off" of doThis()
}
else if(aThirdThingIsTrue){
execute "case: idle" of doThis()
}
else if(aFourthThingIsTrue){
execute "case: stdby" of doThis()
}
}
На данный момент я не смог найти элегантный, чистый и компактный способ сделать это. Может есть идеи? Как я могу явно настроить таргетинг на каждый случай переключения? Могу ли я использовать новый переключатель для реализации этой условной логики?
Любые предложения приветствуются. Очень ценю вашу помощь.