私はJava/Hibernate/Spring/Quartzで動作するゲームサーバーを持っています。ゲーム時計はクォーツタイマーで刻々と変化しますが、うまくいきます。指定された間隔で任意のコードを呼び出すための洗練された方法が必要です
しかし、私は特定の調整可能な間隔で(ゲーム時間ではなくリアルタイムで)発生する必要がある多くのことがあります。
たとえば、24時間のゲーム時間(サーバーのクロック乗数に応じてリアルタイムから約47分まで)ごとに、一度のゲームアクションが毎回行われます。たとえば、補給や何がありますか。
現在のシステムはかなり粗いですが、動作します - データベースには本質的にcronのテーブルがあります - 文字列キー、次のイベントの実行時間、そして時、分、秒、日その次のものタイム・ティッカーはそれをチェックし、そのコード(イベント・ストリング・キー)を含むメッセージをキューに送り、現在の時刻に日、分、秒を加え、次の実行時刻として設定します。
メッセージリスナーは、グーディーパートです。キーをオンにして、そのメソッドの1つにヒットします。
私はこれがうまくいくことを理解していますが、本当にうまく座りません。あなた自身の小さなクラスにそれぞれのコードを入れるために、あなたの解決策は何でしょうか?これをカバーするデザインパターンは何ですか? (私はそこに1つあると確信しています)。私はいくつかのアイデアを持っていますが、いくつかの意見を聞きたいと思います。
私はこれを答えとしてマークしていません。なぜなら、それは簡単な答えではありません - 確かに、マッピングはスイッチより優れていますが、それは本当にエレガントではありません。 ServiceLoaderはより優れたアプローチですが、Springのような既に実装されている他のインフラストラクチャには対応していません。 –