Разработка шаблонных предложений для последовательных заданий, которые следуют за выходами предыдущих шагов - PullRequest
0 голосов
/ 05 декабря 2018

Я хочу создать синтаксический анализатор слов субтитров.Это работает следующим образом:

  1. Проверка поставщика субтитров на доступность
  2. Выбор субтитров как inputStream
  3. Преобразование inputStream в строки текста
  4. Анализ строк вразделы (файл субтитров включает в себя 100 - 110 разделов)
  5. Анализ предложений разделов к словам
  6. Сохранение субтитров, раздела и слова в БД

Как вы видите каждыйшаг следует за предыдущими шагами вывода.

Какой шаблон (ы) дизайна я должен использовать?

1 Ответ

0 голосов
/ 05 декабря 2018

Я бы рассмотрел использование шаблона проектирования состояний , который похож на шаблон разработки стратегии, но содержит текущее состояние в своем контексте.

Итак, у вас будет что-то вроде этого:

class ProcessingData {
    private State state = new CheckAvailabilityState();

    //Fill with all data related to the subtitle-word parser


    public State getState() {
        return state;
    }

    public void setState(State state) {
        this.state = state;
    }
}

interface State {

    void next(ProcessingData processingData);

    void prev(ProcessingData processingData);

    void execute();

}

class CheckAvailabilityState implements State {
    @Override
    public void next(ProcessingData processingData) {
        processingData.setState(new FetchSubtitlesState());
    }

    @Override
    public void prev(ProcessingData processingData) {
        //this is 1st step so no prev
    }

    @Override
    public void execute() {
        //Availability check goes here ..
    }
}

class FetchSubtitlesState implements State {

    @Override
    public void next(ProcessingData processingData) {
        //ConvertState
    }

    @Override
    public void prev(ProcessingData processingData) {
        processingData.setState(new CheckAvailabilityState());
    }

    @Override
    public void execute() {
        //Fetching goes here ...
    }
}

Но я не уверен насчет сложности или необходимости шаблонов проектирования с учетом проблемы.

...