2010-12-02 120 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對象並收集所有信息。

我的問題基本上是,我怎麼讓Total類知道分數類的所有對象?我曾想過在Total中添加一個名爲setSource(ScoresInterface a)的函數,並將每個新的Scores對象傳入。但是,它看起來有點冗長。如果有100個物體怎麼辦?

感謝所有幫助

+0

這不是問題的答案,而是讓ScoresInterface返回一個HashMap將您與實現綁定並限制您。相反,如果您需要知道密鑰,ScoresInterface會使用您需要的任何鍵和值類型來實現「getScore(key)」,並可能會使用「Collection getKeys()」。至少讓ScoresInterface返回Map而不是HashMap。 – DJClayworth 2010-12-02 21:26:18

回答

0

我想傳遞一個List<ScoresInterface>

這樣你可以使用Total類遍歷並計算總數。

List實現的類型(ArrayList,LinkedList等..)是由你決定的。