Вы должны взглянуть на шаблон проектирования Strategy
. Это позволит вам абстрагировать логику c, связанную с действием.
Кроме того, вы хотите заменить переключатель, чтобы найти правильную стратегию в соответствии с входной переменной. Это работа шаблона проектирования Factory
, который в вашем случае возвращает одну из различных стратегий в соответствии со значением базы данных.
В основном:
interface UserAction {
public void execute();
}
class ListMovies implements UserAction {
public void execute() {
// List the movies
}
}
class ExitProgram implements UserAction {
public void execute() {
// Kill kenny
}
}
class Noop implements UserAction {
public void execute() {
// Do nothing
}
}
И фабрика:
class UserActionFactory {
public UserAction make(int actionId) {
switch (actionId) {
0: return new ListMovies();
1: return new ExitProgram();
default: return new Noop();
}
}
}
Что позволяет:
UserActionFactory factory = new UserActionFactory();
ScannerWrapper sw = new ScannerWrapper();
while (true) {
menuHeader();
int choice = sw.readInt();
UserAction action = factory.make(choice);
action.execute();
}
Это также может быть шаблон проектирования Command
, в зависимости от того, как вы называете вещи и создаете экземпляры объектов для остальные классы.