При первоначальном вызове 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();