根据先前步骤输出的顺序作业的模式建议

时间:2018-12-05 10:23:04

标签: java design-patterns sequential

我想设计一个字幕单词解析器。就是这样;

  1. 检查字幕提供者的可用性
  2. 以输入流的形式获取字幕
  3. 将inputStream转换为文本行
  4. 将行解析为部分(字幕文件包括100-110个部分)
  5. 将章节的句子解析为单词
  6. 将字幕,部分和单词保存到数据库

您看到的每个步骤都遵循先前的步骤输出。

我应该使用哪种设计模式?

1 个答案:

答案 0 :(得分:0)

我会考虑使用state design pattern,它类似于策略设计模式,但在其上下文中包含当前状态。

所以你会有类似的东西:

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 ...
    }
}

但是我不确定是否存在复杂性或考虑到该问题是否需要设计模式。