解決すべき問題: グラフのすべてのノードに優先度 (int 値) を与えます。属性 Graph (JGraphT ライブラリの DirectedGraph タイプ) を持つ DAG クラスがあります。さらに、優先順位を割り当てるにはさまざまなアルゴリズムが必要であり、既存のコードを変更することなく、将来的に新しいアルゴリズムを追加できる必要があります。最初に DAG が作成され、次にユーザーは (GUI で ComboBox を使用して) 使用するアルゴリズムを選択できます。ユーザーはいつでもアルゴリズムを変更できる必要があります。
アプローチ 1: アルゴリズムのインターフェイス (アルゴリズム) を開発し、すべてのアルゴリズムにそのインターフェイスを実装させます。DAG クラスで、新しい属性を追加します。
Algorithm myAlgo;
ユーザーが GUI で異なるアルゴリズムを選択するたびに、そのアルゴリズムをインスタンス化します。
myAlgo = new AlgorithmNumberX;
アプローチ 2: 優先順位付けタスクを個別に (DAG の属性としてではなく) 記述し、静的メソッドを使用して、DAG を引数として送信し、変更された DAG を返すことにより、DAG のノードに優先順位を付けます。
それぞれのアプローチにはどのような利点がありますか?