通常のステート マシンでステート パターンを使用していました。[ A -> B ]、[ B -> C ]、[ A -> C ]から行けるようにしたかったのです。今、私たちのドメインには新しいルールがあり、[C -> A] からも移動する必要がありますが、以前に B に行ったことがない場合に限ります。したがって、メモリのある状態があります。考えられる解決策は 2 つあります。
- B の後に C を意味する新しいステートCBを作成し、[ A -> B ]、[ B -> CB ]、[ A -> C ]、[ C -> A ]のルールを設定します。
- Context には以前の状態 (StateHistoric と呼びましょう) と遷移が行われた日付 (状態履歴も顧客のドメイン要件です) のリストがあるという事実を使用し、これらのルールを使用します [ A -> B ]、[ B -> C ]、[ A -> C ]、[ Bが Context.StateHistoric にない場合はC -> A ]。
状態パターンのメモリを使用するより正しい方法は 2 つのうちどれですか? (またはこれら2の別の代替手段)
ありがとう