状态模式在解析String时很有用。国家意味着一部分 工作,就像一种方法。当你从字符串中解析一些单词时,你会将状态改为 一个新的
这意味着什么?我真的很困惑。
我有一个格式为“OPERATOR OBJECT [FILTER] [VALUES]”的字符串 在解析查询时,您应该使用State Pattern。有四种状态:OPERATOR,OBJECT,FILTER和VALUES“
答案 0 :(得分:2)
我认为你引用的作者可以引用自动机理论的 acceptor 之类的东西,它使用不同的状态来存储当前的匹配进度。为了说明这一点,我将举一个例子。但是,状态与方法不同,但它们以不同的方式实现相同的方法。
/** Accepts strings which contain SO */
class Acceptor {
private enum State {
NOTHING_YET {
@Override
State nextState( char c ) {
if(c == 'S') {
return FOUND_S;
} else {
return NOTHING_YET;
}
}
},
FOUND_S {
@Override
State nextState( char c ) {
if(c == 'O') {
return FOUND_SO;
} else if(c == 'S') {
return FOUND_S;
} else {
return NOTHING_YET;
}
}
},
FOUND_SO {
@Override
State nextState( char c ) {
return FOUND_SO;
}
};
abstract State nextState( char c );
}
boolean accept( String word ) {
State current = State.NOTHING_YET;
for(char c : word.toCharArray()) {
current = current.nextState( c );
}
return current == State.FOUND_SO;
}
}