class LiveCommandFactory {

    @Nonnull
    public LiveCommand getLiveCommand(@Nonnull final Command<?> command) {
        checkNotNull(command, "command");

        final String commandType = command.getType();
        final Function<Command, LiveCommand> commandToLiveCommand = mappingStrategies.get(commandType);
        if (null == commandToLiveCommand) {
            final String msgTemplate = "No mapping strategy for command <{0}> available!"
                    + " The command type <{1}> is unknown!";
            throw new IllegalArgumentException(MessageFormat.format(msgTemplate, command, commandType));
        }
        return commandToLiveCommand.apply(command);
    }

    private  LiveCommandFactory();

}