Я согласен с тем, что вы должны обязательно поместить эту логику в чистый интерфейс:
public String lookupDays(String group, String date);
но, возможно, вам следует вставить данные в файл свойств. Я не против жесткого кодирования этих данных в ваших исходных файлах, но, как вы заметили, Java может быть довольно многословной, когда речь идет о вложенных коллекциях. Ваш файл может выглядеть так:
A.Summer = M
A.Spring = TTS
B.Summer = Т
Обычно мне не нравится перемещать подобные статические данные во внешний файл, потому что это увеличивает «расстояние» между данными и кодом, который их использует. Однако всякий раз, когда вы имеете дело с вложенными коллекциями, особенно с картами, все может стать очень уродливым, очень быстрым.
Если вам не нравится эта идея, возможно, вы можете сделать что-то вроде этого:
public class WaterScheduler
{
private static final Map<String, String> GROUP2SEASON = new HashMap<String, String>();
static
{
addEntry("A", "Summer", "M");
addEntry("A", "Spring", "tTS");
addEntry("B", "Summer", "T");
}
private static void addEntry(String group, String season, String value)
{
GROUP2SEASON.put(group + "." + season, value);
}
}
Вы теряете некоторую читабельность, но, по крайней мере, данные ближе к месту их использования.