2010-12-02 19 views
0

私は、いくつかのソースからデータを読み込む必要のあるプログラムを持っています。私はいくつかのオブジェクトを持っています、それぞれには学生のリストとテストのスコアが含まれています。次に、各オブジェクトからすべての情報を抽出する必要がある別のクラスを作成します。インタフェースと依存性注入の使用

問題は、私がインターフェイスで操作する必要があるということです。すなわち

public class Total{ 
     HashMap<String, Integer> results; 
     ScoresInterface si; 
     ... 
     void addScores(){ 
     results.putAll(si.getScores()); 
     } 

} 

public interface ScoresInterface{ 
     public HashMap getScores(); 
} 

public class Scores implements ScoresInterface{ 
    HashMap<String, Integer> results; 
    ... 
    public HashMap getScores(){ 
      return results; 
     } 
} 

このコードが意味をなされることを願います。 Totalクラスは、基本的にいくつかのScoresオブジェクトにアクセスし、すべての情報を収集する必要があります。

私の質問は基本的に、私は合計クラスにスコアクラスのすべてのオブジェクトについて知らせることができますか?私はsetSource(ScoresInterface a)と呼ばれるTotalに関数を追加し、スコアの新しい各オブジェクトを渡すことを考えました。しかし、それは少し長めに見えます。オブジェクトが100個の場合はどうなりますか?任意のヘルプ

+0

これは質問に対する回答ではありませんが、ScoresInterfaceを返すことで、HashMapは実装と結びつけて制限します。代わりにScoresInterfaceに必要なキーと値の型を持つ "getScore(key)"を実装し、キーを知る必要がある場合は "Collection getKeys()"を実装してください。少なくとも、ScoresInterfaceはHashMapではなくMapを返します。 – DJClayworth

答えて

0

ため

おかげで私はList<ScoresInterface>に渡します。

このようにして、Totalクラスを繰り返し使用して合計を計算することができます。

リスト実装(ArrayList、LinkedListなど)のタイプはあなた次第です。