Sobes.tech
Junior — Middle

Կարող եք բացատրել ծրագրերի ճարտարապետությունում Coordinator և Router ձևանմուշների տարբերությունները:

sobes.tech AI

Պատասխան AI-ից

Կոորդինատոր և Ռոուտեր ձևանմուշները երկուսն էլ օգտագործվում են հավելվածներում նավիգացիան կառավարելու համար, բայց ունեն տարբեր շեշտադրումներ և պատասխանատվության մակարդակներ:

Կոորդինատոր — դա օբյեկտ է, որը կառավարում է էկրանների հոսքը և նավիգացիայի բիզնես տրամաբանությունը: Նա պատասխանատու է էկրանների ստեղծման և կապելու համար, ինչպես նաև նրանց միջև անցումների համար: Կոորդինատորը հաճախ պարունակում է տրամաբանություն, որը որոշում է, թե հաջորդը որ էկրանն է ցույց տալու, և կարող է կառավարել մի քանի ներքին կոորդինատորներ:

Ռոուտեր — դա ցածր մակարդակի կոմպոնենտ է, որը անմիջապես պատասխանատու է անցումների իրականացման համար (օրինակ, push, present) էկրանների միջև: Ընդհանրապես, Ռոուտերը թաքցնում է UINavigationController կամ այլ նավիգացիայի միջոցների աշխատանքային մանրամասները և տրամադրում է պարզ ինտերֆեյս անցումների համար:

Հիմնական տարբերությունները:

  • Կոորդինատորը կառավարում է նավիգացիայի տրամաբանությունը և հավելվածի հոսքը, Ռոուտերը — կոնկրետ գործողությունները:
  • Կոորդինատորը կարող է օգտագործել մեկ կամ մի քանի Ռոուտերներ անցումների իրականացման համար:
  • Կոորդինատորը պատասխանատու է էկրանների ստեղծման և կոնֆիգուրացիայի համար, Ռոուտերը — դրանց ցուցադրման:

Պարզեցված կառուցվածքի օրինակ:

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)
    }
}