일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- hadoop
- Spring
- SBT
- docker
- Java
- 엘라스틱서치
- apache storm
- elasticsearch
- Storm
- Linux
- hibernate
- scala
- 제주
- intellij
- Clean Code
- Spring XD
- spark
- Gradle
- hdfs
- Angular2
- Spring Batch
- Spring Boot
- 스프링 배치
- Hbase
- 인텔리J
- design pattern
- elastic search
- 도메인주도설계
- nginx
- DDD
- Today
- Total
욱'S 노트
Intepreter - 언어로 문제를 해결하기 본문
언어로 문제를 해결하기
Class Diagram
Sample Code
public interface AbstractExpression {
public void interprete(Context context);
}
public class TerminalExpression implements AbstractExpression {
@Override
public void interprete(Context context) {
String token = context.currentToken();
if (!"go".equals(token) ) {
new NonTerminalExpression().interprete(context);
} else {
System.out.println("go");
}
}
}
public class NonTerminalExpression implements AbstractExpression {
@Override
public void interprete(Context context) {
String token = context.currentToken();
if ( "begin".equals(token)) {
System.out.println("begin");
while ((token = context.nextToken()) != null )
{
new TerminalExpression().interprete(context);
}
} else if ( "end".equals(token)) {
System.out.println("end");
} else {
System.out.println("error");
}
}
}
public class Context {
private StringTokenizer tokenizer;
private String currentToken;
public Context(String text) {
tokenizer = new StringTokenizer(text);
this.nextToken();
}
public String nextToken() {
if (tokenizer.hasMoreTokens()) {
currentToken = tokenizer.nextToken();
} else {
currentToken = null;
}
return currentToken;
}
public String currentToken() {
return currentToken;
}
}
public class Client {
public static void main(String[] args) {
String text = "begin go go go end";
Context context = new Context(text);
NonTerminalExpression nonTerminalExpression = new NonTerminalExpression();
nonTerminalExpression.interprete(context);
}
}
Caution
특별한 주의사항은 없다.
'Methdology > Design Pattern' 카테고리의 다른 글
Command - 명령을 클래스로 표현하기 (0) | 2012.04.30 |
---|---|
State - 클래스로 상태 표현하기 (0) | 2012.04.27 |
Memento - 상태 저장하기 (0) | 2012.04.26 |
Observer - 자신의 상태를 전달하기 (0) | 2012.04.26 |
Mediator - 중개인을 통해 지시내리기 (0) | 2012.04.26 |