状态模式在解析字符串时很有用。状态意味着工作的一部分,就像方法一样。当您从字符串中解析一些单词时,您会将状态更改为新的
这是什么意思?我真的很困惑。
我有一个格式为“OPERATOR OBJECT [FILTER] [VALUES]”的字符串,并且在解析查询时应该使用状态模式。有四种状态:OPERATOR、OBJECT、FILTER 和 VALUES"
状态模式在解析字符串时很有用。状态意味着工作的一部分,就像方法一样。当您从字符串中解析一些单词时,您会将状态更改为新的
这是什么意思?我真的很困惑。
我有一个格式为“OPERATOR OBJECT [FILTER] [VALUES]”的字符串,并且在解析查询时应该使用状态模式。有四种状态:OPERATOR、OBJECT、FILTER 和 VALUES"
我认为您引用的作者可能指的是自动机理论的接受者,它使用不同的状态来存储当前的匹配进度。为了说明这一点,我将举一个例子。但是,状态不像方法,而是以不同的方式实现相同的方法。
/** 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;
}
}