2

私の TCP アプリケーションでは、IO がブロックされている限り、ステート デザイン パターンが役立つように見えました。

私の SwingWorker の doInBackground() は、1 つのオブジェクトへの参照によって、TCP 接続の状態の読み取り、書き込み、受け入れをループする可能性があります。ウィキペディアのトーク ページの例を参照してください: http://en.wikipedia.org/wiki/Talk%3AState_pattern

しかし、サーバーをノンブロッキング IO にリファクタリングしたところ、役に立たなくなりました。Select() は IO の準備ができているチャネルのグループを返し、これらは一連の if ステートメントで SelectionKey 状態を参照することによって処理されました。

IO が非ブロッキングの場合に State Design Pattern がまだ有用であるかどうかを、経験または理解から確認できる人はいますか?

Stateの設計パターンとTCPの関係を正しく把握できているか不安なので質問します。

4

1 に答える 1

1

それでも非常に便利です。接続ごとにステート マシンがあるだけです。select(2)(またはpoll(2)、またはepoll(7)) 複数のチャネルで待機し、それらのステート マシンにイベントをディスパッチする方法を提供します。

于 2012-09-20T17:38:18.383 に答える