背景:由于之前开发插件的java代码里,中文注释和显示信息都是直接写在java代码中,现在需要将其中的需要做国际化的中文资源提取出来,放到properties文件里,所以写了一个小工具。
思想:应用了状态机模式编程,定义正常状态(NormalState),引号内状态(QuotState),块注释状态(BlockNote),行注释状态(LineNote),四个状态类,定义一个流程控制类(Process),一个数据模型类(DataModel),还有一个Main类(Main)。
废话不多说,上代码。
数据模型类(DataModel)
importjava.io.BufferedReader;importjava.io.PrintWriter;public classDataModel {privateState state;privateBufferedReader reader;privateString line;private intfrom;privatePrintWriter output;public DataModel(State state, BufferedReader reader, String line, intfrom,
PrintWriter output) {super();this.state =state;this.reader =reader;this.line =line;this.from =from;this.output =output;
}publicState getState() {returnstate;
}public voidsetState(State state) {this.state =state;
}publicBufferedReader getReader() {returnreader;
}public voidsetReader(BufferedReader reader) {this.reader =reader;
}publicString getLine() {returnline;
}public voidsetLine(String line) {this.line =line;
}public intgetFrom() {returnfrom;
}public void setFrom(intfrom) {this.from =from;
}publicPrintWriter getOutput() {returnoutput;
}public voidsetOutput(PrintWriter output) {this.output =output;
}
}
状态类的基类:
import java.io.BufferedReader;
import java.io.PrintWriter;
public abstract class State {
public abstract void handle(BufferedReader reader,String line,int from,PrintWriter output);
}
四个状态子类ÿ