Вообще, здесь все зависит от того, что конкретно делает ваша система и будет ли у нее развитие.
Но, если мыслить объектно, то устройство - это то, чему на вход подают некую команду, он ее выполняет и отдает ответ. Соответственно, вам нужна реализация Device, которая через метод execute(Executable command) принимает объект, который реализует интерфейс Executable. А список команд уже никакого отношения к устройству не имеет, поэтому и хранится должен отдельно.