State pattern
を使用して、状態に応じて動作を変更するオブジェクトをモデル化できること、およびContext
が持つことができるさまざまな状態が、インターフェイスを表す具体的なクラスにカプセル化されていることを理解していState
ます。私がはっきりしていないのは、このパターンで状態遷移がどのように発生するかです。個人states
は、誰がフォローするかを知って決定しますか、それともContext
次にどの状態になるかを決定するのは個人ですか?
質問する
3094 次
2 に答える
14
GOF Design Patterns book から (これは実装セクションにあります):
1. 誰が状態遷移を定義しますか? 状態パターンは、どの参加者が状態遷移の基準を定義するかを指定しません。基準が固定されている場合、それらは完全にコンテキストで実装できます。ただし、State サブクラス自体に後続の状態と遷移を行うタイミングを指定させる方が、一般的にはより柔軟で適切です。これには、State オブジェクトが Context の現在の状態を明示的に設定できるようにする Interface を Context に追加する必要があります。
このように遷移ロジックを分散化すると、新しい State サブクラスを定義してロジックを変更または拡張することが容易になります。分散化の欠点は、1 つの State サブクラスが少なくとも 1 つの他のサブクラスの知識を持っていることです。これにより、サブクラス間に実装の依存関係が導入されます。
于 2013-01-21T07:36:38.263 に答える