Хотя нет необходимости использовать шаблон в ситуациях, когда формат вводимого текста всегда одинаков, в ситуации, когда формат должен измениться.Например, если вы считаете, что ваше приложение может поддерживать дополнительные форматы файлов в будущем, вам пригодится шаблон стратегии .
class LineData {
public String a;
public String b;
public String c;
}
interface FileParser {
List<LineData> parse(String fileName);
}
class FileParserFixed : FileParser {
public int widthOfA;
public int widthOfB;
public int widthOfC;
public List<LineData> parse(string fileName) {
}
}
class FileParserDelimited : FileParser {
public char delimiter;
public List<LineData> parse(string fileName) {
}
}
Приложение, использующееэтот подход запрограммирует интерфейс FileParser, и различия между синтаксическим анализом и файлами фиксированной ширины будут инкапсулированы в реализацию FileParser
, которую вы выбираете во время выполнения.