Java や C++ などの OOP 言語で有限状態オートマトンを使用するプログラムを実装することを考えています。
優れたソフトウェア設計に関して、管理可能な量の利用可能な状態でこれを実装する最良の方法は何だと思いますか?
状態ごとに独自のクラスを実装するのは良いことですか? はいの場合、2 つの状態の間の橋渡しを行うにはどうすればよいですか?
コメントありがとうございます!
Java や C++ などの OOP 言語で有限状態オートマトンを使用するプログラムを実装することを考えています。
優れたソフトウェア設計に関して、管理可能な量の利用可能な状態でこれを実装する最良の方法は何だと思いますか?
状態ごとに独自のクラスを実装するのは良いことですか? はいの場合、2 つの状態の間の橋渡しを行うにはどうすればよいですか?
コメントありがとうございます!
これは、プログラミングの腕を振るためだけですか、それとも実際のプロジェクトなどのためですか? どちらの場合も、ステート マシンを何のために使用するかによって異なります。
プロジェクトの場合、ターゲットの用途に応じて、そのドメインでライブラリを探すことをお勧めします。たとえば Java には、ワークフロー/ビジネス フロー用の多数のライブラリと、多数のルール エンジンがあります (Drools はすぐに思い浮かびますが、複雑な巨大なものです)。
dk.brics.automatonライブラリは、Java での FSA の優れた実装です。これはパフォーマンスを念頭に置いて構築されているため、いくつかの OOP 原則を速度と引き換えにしていますが、一読することをお勧めします。
これを試してみてください - 設計に関するセクションは優れており、fsm http://www.ibm.com/developerworks/library/wa-finitemach1/の使用法を示しています
私が見たもう 1 つの用途は、OMG 管理対象オブジェクトのライフサイクルの拡張を使用して、オブジェクトを「ダウン」状態から「開始」状態などに移動する「開始」遷移を使用して、コンピューター サービスの管理対象オブジェクトを実装することです。