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, երբ.
- Դուք պետք է կիսվեք նախագծով դիզայների հետ, և նախագծման և մշակման աշխատանքները կարող են իրականացվել ինքնուրույն:
- Դուք պահանջում եք միավորի փորձարկում ձեր լուծումների համար:
- Դուք պետք է ունենաք բազմակի օգտագործման բաղադրիչներ՝ ինչպես ձեր կազմակերպությունում, այնպես էլ նախագծերի շրջանակներում:
- Դուք ավելի շատ ճկունություն եք ուզում՝ ձեր տեսակետները փոխելու համար՝ առանց կոդի բազայի այլ տրամաբանությունը վերամշակելու:
Ո՞ր օրինակը պետք է ընտրել:
Դիզայնի օրինակ օգտագործելու հիմնական պատճառը բարդությունը նվազեցնելն է: Դուք կարող եք դա անել՝ նվազեցնելով ընդհանուր բարդությունը կամ փոխարինելով անծանոթ բարդությունը ծանոթով: Եթե դիզայնի օրինաչափությունը չի կարող նվազեցնել բարդությունը այդ երկու եղանակներից որևէ մեկով, մի օգտագործեք դրանցից որևէ մեկը. դա ոչ մի արժեք չի ավելացնի:
Եթե իսկապես վստահ եք, որ պետք է օգտագործեք դիզայնի օրինակ, փորձեք կազմել ստուգաթերթ: Հիմնեք այն իրավիճակների վրա, որոնք դուք տեսել եք այստեղ և ընտրեք լավագույնը ձեր նախագծի համար: