У меня есть программа, которая должна читать данные из нескольких источников. У меня есть несколько объектов, каждый из которых содержит список учеников и их тестовые оценки. Затем у меня есть другой класс, который должен извлекать всю информацию из каждого объекта.Использование интерфейса и инъекции зависимостей
Проблема в том, что я должен работать через интерфейс. т.е.
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 объектов.
Спасибо за любую помощь
Это не ответ на вопрос, но приведение результата ScoresInterface в HashMap связывает вас с реализацией и ограничивает вас. Вместо этого ScoresInterface реализует «getScore (ключ)» с любыми типами и значениями, которые вам нужны, и, возможно, «Collection getKeys()», если вам нужно знать ключи. По крайней мере, скопировать карту ScoresInterface вместо HashMap. – DJClayworth 2010-12-02 21:26:18