有限状態マシンを使用することの多くの欠点について読みましたが、複雑な動作をモデル化するための代替パターンが提案されているのを見たことがありません-何かありますか?
1 に答える
参考にしていただけますか?私は一般に、FSM について熱烈な言葉で書かれているのを見ます。本当に FSM を持っている場合、実装はそれほど難しくなく、多くの利点があります。多くの場合、人々は自分が FSM を持っていると考えていますが、実際に持っているのは、いくつかのステップを経て進む単純な手続き的なものです。その場合、考慮すべき重要な代替手段は、デザイン パターンTemplate Methodです。
FSM が真価を発揮するのは、テンプレート メソッドで実行できる以上のことを行うときです。これは、あるステージから別のステージへの進行に制約がある場合です。たとえば、納税申告の準備のようなものをモデル化している場合、収入の事前収集と総賃金の計算はすべて最初の段階で行われ、賃金が完了するまで控除の計算を開始する方法はありません。(これは不自然な例ですが、状態遷移には他の前提条件があると想像してください。)
ギャング・オブ・フォーの例によると、テンプレート・メソッドは、特定のアクションが一連のステップを順番に進む必要があるという事実を抽象クラスで強制することを可能にします。Template Method の興味深い点は、これらの詳細を隠して、必要なステップ/メソッドの実装を単に提供するようにサブクラスを強制していることです。