Работа с кэширующей версией API

При первоначальном вызове API-метода для получения основного интерфейса библиотеки

SnookerScoreAPI api = Snooker.API();

мы по умолчанию имеем дело с кэширующей реализацией API-интерфейса SnookerScoreAPI.
В чем же её преимущества?


Во-первых, при работе с кэширующей версией интерфейса при различных запросах вы получаете более полный объём полезной информации. Например, при запросе текущих матчей в выборке будут содержаться, помимо другой информации, ссылки на турнир (объект Event), а также на игроков, участвующих в каждом матче (объекты Player):

SnookerScoreAPI api = Snooker.API();
OngoingMatches matches = api.getOngoingMatches();
for (OngoingMatch match : matches) {
    Event event = match.event();
    Player player1 = match.player1();
    Player player2 = match.player2();
}

Тогда как при работе с некэширующей версией интерфейса вам придётся делать дополнительные запросы о турнире и игроках, чтобы получить полную информацию о проходящих матчах:

SnookerScoreAPI api = Snooker.uncachedAPI();
OngoingMatches matches = api.getOngoingMatches();
for (OngoingMatch match : matches) {
    Event event = api.getEvent(match.eventId());
    Player player1 = api.getPlayer(match.player1Id());
    Player player2 = api.getPlayer(match.player2Id());
}

Во-вторых, в кэширующей версии интерфейса вам предоставляется возможность задать текущий сезон, с событиями которого в дальнейшем вы собираетесь работать путем запросов турниров и матчей:

SnookerScoreAPI api = Snooker.API();
api.setCurrentSeason(Season.getSeason(2015));

P.S. Если вам необходимо использовать некэширующую версию API-интерфейса, то её можно получить следующим образом:

SnookerScoreAPI uncachedApi = Snooker.uncachedAPI();