1

状態パターンは、文字列を解析する際に役立ちます。状態とは、メソッドのように作業の一部を意味します。文字列からいくつかの単語を解析すると、状態が新しい状態に変わります

これはどういう意味ですか?私は本当に混乱しています。

「OPERATOR OBJECT [FILTER] [VALUES]」という形式の文字列があり、クエリの解析中に状態パターンを使用する必要があります。4 つの状態があります: OPERATOR、OBJECT、FILTER、および VALUES"

4

1 に答える 1

2

あなたの引用の著者は、さまざまな状態を使用して現在のマッチングの進行状況を保存するオートマトン理論のアクセプターのようなものを参照できると思います。これを説明するために、例を挙げます。ただし、状態はメソッドとは異なりますが、同じメソッドを異なる方法で実装しています。

/** 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;
    }

}
于 2012-05-07T10:33:53.710 に答える