2010-12-02 2 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), и передаче каждого нового объекта с результатами. Однако это кажется немного длинным. Что делать, если есть 100 объектов.

Спасибо за любую помощь

+0

Это не ответ на вопрос, но приведение результата ScoresInterface в HashMap связывает вас с реализацией и ограничивает вас. Вместо этого ScoresInterface реализует «getScore (ключ)» с любыми типами и значениями, которые вам нужны, и, возможно, «Collection getKeys()», если вам нужно знать ключи. По крайней мере, скопировать карту ScoresInterface вместо HashMap. – DJClayworth 2010-12-02 21:26:18

ответ

0

я передам в List<ScoresInterface>.

Таким образом, вы можете использовать класс Total, чтобы перебирать и вычислять общее количество.

Тип реализации списка (ArrayList, LinkedList и т. Д.) Зависит от вас.

Смежные вопросы