Flutter Dev Talk
#ARCH-7 MVC, MVP, MVVM, MVI — farqi nimada?
Ko'pchilik eshitadigan lekin ko'pincha farqini bilmaydiganlar patternlar, bugungi post ularni tushunish uchun ancha foydali bo'ladi degan umiddamn. Bu patternlarning asosiy maqsadi bir xil: UI va logic orasidagi mas’uliyatni to‘g‘ri ajratish. Farqi — ular qanday aloqa qilishida.
MVC — Model, View, Controller
View → Controller → Model
Controller user actionlarini qabul qiladi va Model bilan ishlaydi. Oddiy loyihalarda tushunarli, lekin murakkab UI’da Controller kattalashib ketishi mumkin.
MVP — Model, View, Presenter
View → Presenter → Model
↓
View
Presenter logicni boshqaradi va View’ga showLoading(), showError() kabi buyruqlar beradi. Kamchiligi — Presenter View bilan kuchliroq bog‘lanishi mumkin.
MVVM — Model, View, ViewModel
View → ViewModel
↓
State
↓
View
ViewModel View’ga nima qilishni buyurmaydi. U state beradi, View esa state’ni kuzatadi.
Flutter’da Cubit/BLoC + state bilan ko‘p hollarda shunga yaqin yondashuv quriladi.
MVI — Model, View, Intent
Intent → Logic → State → View
↑ │
└─────────────────────┘
Asosiy g‘oya — Unidirectional Data Flow. Event keladi → yangi state hosil bo‘ladi → UI state asosida render qilinadi.
Masalan:
PayPressed
↓
Processing
↓
Success / Failure
↓
UI
💡 Muhim: BLoC ishlatish avtomatik ravishda MVI yoki Clean Architecture degani emas. Patternni package emas, responsibility va data flow belgilaydi.
Qisqacha:
MVC → Controller boshqaradi
MVP → Presenter View'ga buyruq beradi
MVVM → View state'ni kuzatadi
MVI → Intent → State → View oqimi
Xulosa: Pattern tanlashda “qaysi biri eng zo‘r?” emas, loyiha murakkabligi uchun qaysi biri yetarli? degan savol muhim.
@flutterDevTalk
131 ·