2017-02-15 6 views
-2

私は3つのアルゴリズムを持っています - それらをA、B、Cと呼ぶことができます。これらのメソッドはそれぞれ独自のゲッターとセッターメソッドを持っています。 AgetA()/setA()と同じかもしれません。 このMainDriverクラスのコマンドライン引数として渡される内容に応じて、A、B、またはCのインスタンスを作成するMainDriverクラスがあります。 MainDriverクラスは、インスタンスが作成されたアルゴリズムのメソッドを実行する複数のスレッドを作成します。したがって、このアルゴリズムインスタンスが作成されると、このインスタンスは、個々のスレッドがそのアルゴリズムのパブリックメソッドを実行できるように、Threadクラスを拡張するクラスにこのインスタンスを渡します。

このマルチスレッドシナリオで使用するデザインパターンはどれですか?

私の質問は、このアーキテクチャを実装するためにどのデザインパターンを使用すべきですか?

スレッドクラスは、どのアルゴリズムインスタンスが引数として渡され、どのゲッターとセッターメソッドを実行するかをどのように知っていますか?

+0

コードをアップロードする方がよいでしょう。質問は意見に基づいています。あなたの質問への答えは要件に応じて変わるでしょう。 – BeginnersSake

+1

デザインパターンの4つの本のギャングを参照してください – Gab

+0

@ GabrieleB - デビッド: "4つの本のルックアップギャング" - あまり役に立たない! –

答えて

0

まず、すべてのアルゴリズムの階層を作成できます。例えばBaseAlgoはインターフェースであり、すべての具体的なAlgosは同じものを実装します。

スレッドのサブクラスはBaseAlgo(「関係あり」)を参照することができ、渡す具体的なAlgoオブジェクトのメソッドを呼び出すことができます。

0

イベント/非同期指向の「アーキテクチャ」は、問題を非常に簡単に解決し、メカニックではなくビジネスコードに集中することができます。

私が間違っている場合を教えてください私たちは、このようなあなたの仕様を再開することができます:選択したプログラムは、別々のスレッドで実行されなければならない特定のプログラム

  • を実行し、

    • 引数に応じて、

    例えばReactor(これはSpringの最新バージョンと完全に統合されています)は、イベント指向のプログラミングスタイルでこれを行うための多くの方法を提供します。

    1. マルチスレッドはすでに処理されています。
    2. "アルゴリズム"コンポーネントのみを開発します。これは、特定のコードを実行するコンポーネント以外は何もありません。これらの各コンポーネントは、メインプログラムによってスローされた特定のイベントを待ち受けます。他に何もない。
  • 関連する問題