Если реально хочешь разобратся в теме, то тебе придётся глубоко
вкурить мануал
Ну а так начем с того, что Router - это компонент Front Controller. Это его состовная часть. По порядку:
1. Задача роутера - словить текущий URI и просмотреть имется ли он в карте маршрутов
2. Задача Dispatcher'a (ну Dispatcher - это тоже компонет Front Controller"а) - вызвать ассоцированный контроллер к словленному URI
В реализации Front Controller'a должен создаватся роутер и диспетчер, и все это должно вызыватся там. Если твоя реализация Front Controller'a отлавливает (или реализует, а не вызыват) роуты, то это значит что ты нарушаешь принцип SRP.