3

私は Java でコーディングしており、次の例のように State デザイン パターンを使用しています

ただし、私が持っているUMLは次のようなものです:

+---------+        +---------+ 
| Context |--------|  State  |
+---------+        +---------+ 
                        |
               +----------------+
               |                |
          +---------+       +---------+
          | State 1 |       | State 2 |
          +---------+       +---------+
               |
       +----------------+
       |                |
  +----------+       +----------+
  | State 1A |       | State 1B |
  +----------+       +----------+

「サブステート」があります。どのようにコーディングできますか?抽象クラスを作成する必要がありますか、State 1それとも他の方法がありますか? 検索しても、このような例は見つかりませんでした。

4

2 に答える 2

3

「サブステート」とはどういう意味ですか? State パターンでは、「Sub-State」として扱えるものはありません。「状態」はエンティティの状態を表します。すべての州は州です。あなたが達成しようとしていることについて合理的な説明をしない限り、あなたは何か間違ったことを考えていると思います.

すべての状態が同じ基本クラス/インターフェイスを共有している限り、機能します。状態間に継承関係がある場合がありますが、それでも機能し、状態パターンとは関係ありません。また、継承関係があっても、それらは「状態」であり、「サブ状態」ではありません。

于 2012-11-12T01:51:01.063 に答える
0

いつものように、モデル化しようとしているドメインに関する詳細情報がなければ、言うのは少し難しいです。ただし、主なケースは次のとおりです。

  • あなたの州がバラバラであり、IS-A原則に対応していること (ここで、それに関するより詳細な情報と議論を見つけることができます)。その場合State1A、 とState1Bは のサブクラスとして問題ありませんState1
  • State1状態を組み合わせることができるため、オプション A と B およびオプション A と Bにあることが理にかなっていState2ます。一般的なケースではありませんが、これは時々発生し、オブジェクトには実際には 2 種類の状態があることを意味します。これを処理する方法は、状態間の相互作用に大きく依存します。それらが独立している場合は、それらを個別の階層としてモデル化できます。それらが動作に依存している場合、Stateクラスは内部状態Aと を持つことができBます。

前述のとおり、2 番目のケースはまれですが、一部の設計では発生します。

HTH

于 2012-11-12T13:08:08.630 に答える