JujaLabs / sqlcmd

0 stars 5 forks source link

Реализовать паттерн команда и реализовать handler для команд #147

Closed kortov closed 5 years ago

kortov commented 6 years ago

CommandHandler

В пакет juja.sqlcmd.controller добавить класс CommandHandler Класс CommandHandler должен содержать поля и метод

private DatabaseManager databaseManager;
private View view;

public void handleCommand(String userInput){}

Command

В пакет juja.sqlcmd.command добавить Command в виде либо абстрактного класса, либо интерфейса, который должен иметь метод

public void execute(String userInput)

Команда должна иметь поля для выполнения своей задачи

DatabaseManager databaseManager;
View view;

Так же можно добавить методы

public abstract void executeConnected(String userInput);
public abstract void executeDisconnected(String userInput);

Инстанцирование команд

По желанию можно добавить enum и фабрику для создания команд. В enum можно воспользоваться кодом:

public enum CommandType {
    COMMAND(
            "command",
            Command::new
    );

    private String name;
    private Supplier<Command> instantiator;

    CommandType(String name, Supplier<Command> instantiator) {
        this.name = name;
        this.instantiator = instantiator;
    }

    public String getName() {
        return name;
    }

    public Command getInstance() {
        return instantiator.get();
}

Тесты

Реализовать базовую функциональность нескольких команд, добавить тесты, моки