-1

Javaアプリを使用してプロセスを実装することを計画しています。このプロセスにはさまざまなフェーズがあります。各フェーズには入力と出力があります。

つまり、input1 => phase1 => outpu1 => phase2 => output2 => phase3=>final_outputのようなものです。

ユーザーが任意のフェーズを拡張して独自の機能を実装できるJavaアプリケーションを作成したいと思います。

たとえば、phase1が指定された入力をソートするとします。私のアプリユーザーに、フェーズ1の機能を置き換えるカスタムクラスを作成させたいと思います。彼らはソートの代わりにカウントをしたいかもしれません。

これを行う方法についてのアイデアはありますか?プラグインアーキテクチャ?同様に機能するフレームワークの例はありますか?どこから始めれば?編集:入力はユーザーからのものです。私のアプリが一連の数値を取得し、並べ替え(フェーズ1)を実行してから、重複を削除(フェーズ2)および追加(フェーズ3)して出力を提供するとします。ここで、フェーズをカスタマイズできるようにします。おそらく、他のことを行う独自のクラスを定義できるようにすることによって。

4

3 に答える 3

2

あなたの質問は一般的すぎてフレームワークを提供できないと思います。そうは言っても、戦略パターンを見ることができます(詳細はこちら)。

このパターンの目的は、動作を定義してから、これらの動作をメソッドパラメーターとして渡すことです。これにより、渡したパラメーターのタイプに応じて、複数のことを実行する1つのメソッドを使用できるようになります。

ただし、私の意見では、同じ方法で並べ替えとカウントを行うと問題が発生することに注意してください。理想的には、各メソッドは少なくともある程度類似した操作を実行する必要があるため、並べ替えには、昇順と降順の並べ替えを実行するメソッドと、カウントを実行する別のメソッドを使用できます。

于 2012-06-20T10:04:33.153 に答える
1

あなたの質問はとても曖昧なので、1つのメソッドで共通のインターフェースを持つだけでこれを実装できます。

「フェーズ」またはステージが同時に発生しない特別な理由はありますか?

または、JMSベースのフレームワークや、 SEDAなどを使用して、はるかに複雑なものを実装することもできます。

于 2012-06-20T10:01:26.353 に答える
1

解決策のアイデア:フェーズは、任意のアルゴリズムで実装できるprocess()メソッドとのインターフェースになります。このprocess()メソッドは、出力リターンタイプを持ち、別の出力をパラメーターとして受け取り、出力を別のタイプ(クラスまたはインターフェイス)にすることができます。また、プロセス全体を実行するExecutorクラスは、フェーズのリストを使用してexecute()メソッドを使用し、各フェーズの戻り出力を次のフェーズの入力として使用します。唯一の未解決の質問は、最初のフェーズの入力は何になるかということです。

于 2012-06-20T10:03:18.810 に答える