Sobes.tech
Junior — Middle

Pode explicar as diferenças entre os padrões Coordinator e Router na arquitetura de aplicações?

sobes.tech IA

Resposta da IA

Os padrões Coordinator e Router são ambos utilizados para gerir a navegação nas aplicações, mas têm diferentes ênfases e níveis de responsabilidade.

Coordinator — é um objeto que gere o fluxo de ecrãs e a lógica de navegação. É responsável por criar e ligar os ecrãs, bem como pelas transições entre eles. O Coordinator frequentemente contém lógica que determina qual o ecrã a mostrar a seguir, e pode gerir vários coordenadores aninhados.

Router — é um componente de nível inferior que é responsável por executar diretamente as transições (por exemplo, push, present) entre os ecrãs. Normalmente, o Router encapsula detalhes de trabalho com UINavigationController ou outros meios de navegação, fornecendo uma interface simples para as transições.

Diferenças principais:

  • O Coordinator gere a lógica de navegação e o fluxo da aplicação, enquanto que o Router lida com ações específicas de transição.
  • O Coordinator pode usar um ou vários Routers para realizar transições.
  • O Coordinator é responsável por criar e configurar os ecrãs, enquanto que o Router é responsável por os mostrar.

Exemplo de estrutura simplificada:

protocol Router {
    func push(_ viewController: UIViewController, animated: Bool)
    func present(_ viewController: UIViewController, animated: Bool)
}

class AppCoordinator {
    let router: Router

    func start() {
        let firstVC = FirstViewController()
        router.push(firstVC, animated: true)
    }
}