2012-01-21 1 views
1

나는 구분 된 텍스트를 파싱하는 파서를 연구 중이다. 예위치 구분 된 텍스트 구문 분석을위한 디자인 패턴?

위치 1-10 : 필드 위치 11-20 : 필드 B 위치 21-30 : 필드 C 등

내가 구현하는 데 사용할 수있는 모든 디자인 패턴은? 나는 내가 사용해야한다고 생각한다 Visitor pattern

+3

왜 이런 패턴이 필요한 이유가 있을까요? 패턴이 있다고해서 반드시 사용해야한다는 것은 아닙니다. –

답변

4

Visitor 패턴?! 그냥 substring()을 라인으로 파일 라인을 읽고 사용 : 내가 모르는 뭔가가

String line = //... 
String a = line.substring(0, 10); 
String b = line.substring(10, 20); 
String c = line.substring(20, 30); 

암을? 질문을 명확히 할 수 있습니까?

+0

나는 그것도 생각했다. 내가 그것을 복잡하게하고있는 것처럼 보인다. = p – youcanlearnanything

1

입력 텍스트의 형식이 항상 동일한 상황에서 패턴을 사용할 필요는 없지만 형식을 변경해야하는 경우가 있습니다. 예를 들어, 나중에 응용 프로그램 이 추가 파일 형식을 지원한다고 생각하면 Strategy Pattern이 유용 할 것입니다.

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의 구현에 캡슐화된다.

관련 문제