Navigator - непосредственная реализация переключения экранов;
Command - команда перехода, которую выполняет Navigator;
CommandBuffer - менеджер, осуществляющий доставку команд навигатору, а также хранение, если навигатор по определенным причинам не может их выполнить в момент поступления;
NavigatorHolder - посредник между Navigator и CommandBuffer (не указан на схеме);
Router - объект, генерирующий низкоуровневые команды для Navigator посредством вызова высокоуровневых методов разработчиком для осуществления навигации;
Screen - высокоуровневая реализация конкретного экрана.
Изначально Cicerone имеет 4 базовые команды переходов:
- Back() - удаляет текущий экран из стека и делает активным предыдущий экран;
- BackTo(Screen) - возвращает на указанный экран, если он есть в цепочке, и удаляет все экраны, что были впереди. Если указанный экран не будет найден в стеке или вместо экрана передать null, то переход осуществится на корневой (root) экран;
- Forward(Screen) - добавляет экран в стек и делает его активным;
- Replace(Screen) - заменяет активный экран на указанный.
Из этих команд в классе Router сформированы шесть базовых высокоуровневых команд:
- navigateTo(Screen) - переход на новый экран;
- newScreenChain(Screen) - сброс стека до корневого экрана и открытие одного нового;
- newRootScreen(Screen) - сброс стека и замена корневого экрана;
- replaceScreen(Screen) - замена активного экрана;
- backTo(Screen) - возврат на любой экран в стеке;
- exit() - выход с активного экрана.