вот вопрос стиля программирования о наилучшей стратегии отображения клавиш ввода на действия в классе, реализующем шаблон состояния.
Я имею дело с двумя классами:
Первый реализует шаблон состояний, который управляет физическим устройством с несколькими состояниями:
class DeviceController {
State _a, _b, _current;
// Actions that may prompt a transition from one state to another
public void actionA() { ... }
public void actionB() { ... }
public void actionC() { ... }
public State getStateA() { ... }
public State getStateB() { ... }
public void setCurrentState() { ... }
};
Второй - это KeyListener, который извлекает весь ввод с клавиатуры и вызывает соответствующее действие из контроллера устройства, когда нажатая клавиша ввода соответствует (на данный момент) жестко закодированной таблице привязок:
class KeyDemo implements KeyListener {
DeviceController _controller;
...
@Override
public void keyPressed(KeyEvent arg0) {
char key = Character.toUpperCase(arg0.getKeyChar());
switch (key) {
case 'A':
_controller.actionA();
break;
case 'B' :
...
}
...
}
Существует ли наилучший стиль кодирования для привязки клавиш к действиям в контроллере? Должен ли я пройти через оператор switch, как в примере кода? Мне кажется, что это решение несколько грязный код: не предполагается ли, что шаблон состояния устраняет ненужные if и переключает управляющие структуры?
Спасибо за ваши предложения.