5

State パターンについて読んでいます。私はまだ始めたばかりなので、もちろんウィキペディアの記事全体を読むことから始めます。

この記事の両方の例に、一般的な State のメソッド/関数用の基本抽象クラスまたは Java インターフェイスがあることに気付きました。次に、ベースから継承し、それらのメソッド/関数をさまざまな方法で実装するいくつかの状態があります。次に、State 型のプライベート メンバーを持ち、いつでもいずれかの実装のインスタンスと等しくなる Context クラスがあります。そのコンテキストクラスも同じメソッドを実装し、それらを現在の状態インスタンスに渡し、状態を変更する追加のメソッドがあります (または、設計によっては、状態の変更が実装されたメソッドの 1 つに対する反応である可能性があることを理解しています)。 .

このコンテキスト クラスが、一般的な State ベース クラス/インターフェイスを特に「拡張」または「実装」しないのはなぜですか?

4

2 に答える 2

6

状態は実装の詳細であり、そのインターフェイスの一部ではないためです。つまり、コンテキストは状態ではなく、状態しかありません。コンテキストのユーザーは、コンテキストに状態があることを意識する必要さえありません。

于 2010-05-28T17:58:10.553 に答える