MVC, MVP, MVVM. Ո՞րն ընտրել:


Մոդելներ, տեսակետներ, դիտման մոդելներ: Որո՞նք են այս հասկացությունները և ինչպե՞ս կարող են դրանք օգնել ձեզ ծրագրային ապահովման նախագծման մեջ:

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

Դիզայնի երեք ամենատարածված նախշերն են MVC, MVP և MVVM: MVC-ն նշանակում է մոդել, դիտում և վերահսկիչ, մինչդեռ MVP-ն նշանակում է մոդել, դիտում և ներկայացում, իսկ MVVM-ը՝ մոդել, դիտում և դիտում մոդել:

Ճարտարապետական և դիզայնի նախշեր

Ճարտարապետական նախշ

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

Դիզայնի օրինակ

Դիզայնի օրինաչափությունը ֆորմալացված լավագույն պրակտիկա է, որը դուք կարող եք օգտագործել հավելված կամ համակարգ նախագծելիս ընդհանուր խնդիրները լուծելու համար:

Տարբերությունը ճարտարապետական և դիզայնի օրինակի միջև

Սկսենք ընդհանուր տերմինից՝ օրինաչափություն: Ծրագրային ապահովման մեջ օրինաչափությունը կրկնվող հատկություն է, որը թույլ է տալիս հսկայական և բարդ կառուցվածքը բաժանել ավելի փոքր, պարզ բաղադրիչների: Դուք կարող եք օգտագործել այս օրինաչափությունը՝ խնդիրների դասի համար ընդհանուր լուծում ստեղծելու համար:

Ծրագրային ապահովման մշակման յուրաքանչյուր մակարդակում դուք կօգտագործեք տարբեր գործիքներ: Ավելի փոքր մակարդակներում այս գործիքները դիզայնի նախշեր են: Ճարտարապետական օրինաչափությունները գոյություն ունեն ավելի մեծ մակարդակներում, իսկ ծրագրավորման պարադիգմները՝ իրականացման մակարդակում:

Ինչու՞ մեզ պետք են ճարտարապետական ձևավորման նախշեր:

Ծրագրային ապահովման մշակման ընթացքում դուք կարող եք օգտագործել ճարտարապետական նախագծման նախշեր՝ ընդհանուր խնդիրները լուծելու համար: Լավ ճարտարապետությունը կարող է նաև օգնել ձեզ՝

  • Բարդ առաջադրանքները բաժանեք ավելի պարզ խնդիրների:
  • Նվազեցրեք սխալները:
  • Ստեղծեք փորձարկվող և պահպանվող կոդ:

Բայց առանց ճարտարապետական օրինաչափության, դուք կարող եք դժվարությունների հանդիպել ձեր հավելվածի բիզնես տրամաբանությունը պահպանելու համար:

Model, View, ViewModel, Controller և Presenter

Նախքան յուրաքանչյուր օրինակին նայելը, ահա այն տերմինները, որոնք կազմում են դրանք.

  • Model-ը պահպանում է տվյալները և անմիջականորեն հաղորդակցվում տվյալների բազայի հետ: Մոդելը այն մասն է, որը ներկայացնում է ձեր տվյալները և կիրառման տրամաբանությունը: Այն սահմանում է բիզնեսի կանոնները, որոնք կառավարում են տվյալների մշակումը, փոփոխումը կամ մշակումը:
  • View-ը ցուցադրում է մոդելի տվյալները և պատասխանատու է օգտատիրոջ միջերեսում տվյալների ներկայացման համար:
  • ViewModel բացառիկ է MVVM օրինակին: Սա դիտման շերտի աբստրակցիա է և նաև գործում է որպես մոդելի տվյալների փաթաթում:
  • Կարգավորիչը այն բաղադրիչն է, որը միավորում է տեսքը և մոդելը:
  • Ներկայացնողը բաղադրիչ է, որն առկա է միայն MVP մոդելում: Ներկայացնողը մուտք է ստանում view բաղադրիչից և մոդելի օգնությամբ մշակում տվյալները:

MVC, MVP և MVVM նախշեր

Model-View-Controller Pattern

MVC ճարտարապետական օրինակն առաջինն էր, և այն այսօր տարածված է վեբ հավելվածների ոլորտում: Այն ներկայացվել է 1970-ականներին։ Այս օրինաչափությունը թույլ է տալիս ստեղծել հավելված մտահոգությունների տարանջատման (SoC) շուրջ: Այն թեթևացնում է ձեր հավելվածը փորձարկելու, պահպանելու և զարգացնելու համար անհրաժեշտ ջանքերը:

MVC օրինաչափության դեպքում մոդելը չի հասկանում տեսադաշտը կամ կարգավորիչը: Մոդելի դիտորդը ծանուցում կստանա, երբ տեսադաշտում և կարգավորիչում փոփոխություն լինի: Կարգավորիչն օգնում է երթուղային գործընթացին միացնել մոդելը համապատասխան տեսքին:

MVC մոդելի որոշ առավելություններ են.

  • Մտահոգությունների տարանջատում (ավելի կենտրոնացված):
  • Հեշտացնում է կոդը փորձարկելն ու կառավարելը:
  • Խթանում է հավելվածի շերտերի անջատումը:
  • Կոդի ավելի լավ կազմակերպում և կրկնակի օգտագործման հնարավորություն:

Ահա թե ինչպես է աշխատում MVC-ն.

SoC-ի շնորհիվ MVC-ն կարող է նվազեցնել կոդի չափը և ստեղծել մաքուր և կառավարելի լավ կոդ:

Model-View-Presenter Pattern

MVP օրինաչափությունը կիսում է երկու բաղադրիչ MVC-ի հետ՝ մոդել և տեսք: Այն փոխարինում է կարգավորիչը ներկայացնողով: Ներկայացնողը, ինչպես ենթադրում է նրա անունը, օգտագործվում է ինչ-որ բան ներկայացնելու համար: Այն թույլ է տալիս ավելի հեշտությամբ ծաղրել տեսարանը:

MVP-ում հաղորդավարն ունի «միջին մարդու» ֆունկցիոնալությունը, քանի որ ներկայացման ողջ տրամաբանությունը դրված է դրան: MVP-ի դիտումն ու ներկայացողը նույնպես միմյանցից անկախ են և փոխազդում են ինտերֆեյսի միջոցով:

Ահա մի օրինակ, թե ինչպես է աշխատում MVP օրինակը.

Ներկայացնողը մուտք է ստանում օգտվողից դիտման միջոցով: Այնուհետև այն մշակում է օգտատիրոջ գործողությունները մոդելի օգնությամբ՝ արդյունքները վերադարձնելով դիտմանը: Ներկայացնողը շփվում է տեսարանի հետ ինտերֆեյսների միջոցով:

Model-View-ViewModel Pattern

MVVM-ը MVC-ի ժամանակակից էվոլյուցիան է: MVVM-ի հիմնական նպատակն է ապահովել հստակ տարանջատում տիրույթի տրամաբանության և ներկայացման շերտի միջև: MVVM-ն աջակցում է տվյալների երկկողմանի կապը դիտման և դիտման մոդելի միջև:

MVVM օրինակը թույլ է տալիս առանձնացնել ձեր կոդի տեսքը և մոդելը: Սա նշանակում է, որ երբ մոդելը փոխվում է, տեսքը կարիք չունի, և հակառակը: Օգտագործելով viewmodel, դուք կարող եք կատարել միավորի թեստավորում և ստուգել ձեր տրամաբանական վարքը՝ առանց ձեր տեսակետը ներգրավելու:

Ահա մի օրինակ, թե ինչպես է աշխատում MVVM-ը.

Երբ օգտագործել MVC, MVP և MVVM

Այժմ, երբ դուք սովորել եք յուրաքանչյուր օրինակի մասին, պարզեք, թե երբ օգտագործել դրանք:

Երբ օգտագործել MVC

MVC-ն պարզապես մտահոգությունների տարանջատման իրականացում է: Եթե ձեր հավելվածին անհրաժեշտ է տարանջատել տվյալները (մոդելը), տվյալների սեղմումը (կարգավորիչը) և տվյալների ներկայացումը (դիտումը), MVC-ն լավ կաշխատի: MVC-ն նաև լավ է ծառայում այն հավելվածում, որտեղ տվյալների աղբյուրը և/կամ տվյալների ներկայացումը կարող են փոխվել ցանկացած պահի:

Երբ օգտագործել MVP

Դուք կարող եք օգտագործել MVP, երբ ձեր հավելվածն ունի երկկողմանի հոսք: Եթե օգտատերերի փոխազդեցությունների համար անհրաժեշտ է ինչ-որ բան պահանջել մոդելից, և այս հարցման արդյունքը անմիջապես կփոխի միջերեսը, հաշվի առեք MVP-ն:

Երբ օգտագործել MVVM

Դուք կցանկանաք օգտագործել MVVM, երբ.

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

Ո՞ր օրինակը պետք է ընտրել:

Դիզայնի օրինակ օգտագործելու հիմնական պատճառը բարդությունը նվազեցնելն է: Դուք կարող եք դա անել՝ նվազեցնելով ընդհանուր բարդությունը կամ փոխարինելով անծանոթ բարդությունը ծանոթով: Եթե դիզայնի օրինաչափությունը չի կարող նվազեցնել բարդությունը այդ երկու եղանակներից որևէ մեկով, մի օգտագործեք դրանցից որևէ մեկը. դա ոչ մի արժեք չի ավելացնի:

Եթե իսկապես վստահ եք, որ պետք է օգտագործեք դիզայնի օրինակ, փորձեք կազմել ստուգաթերթ: Հիմնեք այն իրավիճակների վրա, որոնք դուք տեսել եք այստեղ և ընտրեք լավագույնը ձեր նախագծի համար: