Controller — bu komponenta View va Model o’rtasidagi munosabatni o’rnatadi. U dasturning asosiy logikasini o’z ichiga oladi va foydalanuvchining xatti harakati to’g’risida ma’lumot oladi va ehtiyojga qarab modelni yangilaydi.
Ilovaga modular dizayn berish maqsadida MVC sxemasi qo’llanilganiga qaramay, kod qatlamlari bir -biriga bog’liq hisoblanadi. Ushbu arxitektura patternida View va Controller ikkalasi ham Modelga bog’liq. Loyihada MVC modelini qo’llash uchun bir nechta yondashuvlar bo’lishi mumkin:
1 — Yondashuv: Activity va fragmentlar Controller vazifasini bajarishi va Viewni yangilash uchun mas’ul bo’ladi.
2 — Yondashuv: Activity yoki fragmentlarni view va controller sifatida ishlatilib, Model klassini alohida Android klassdan extend qilmaydigan ko’rinishda yaratiladi.
MVC arxitekturasida dastur ma’lumotlari controller tomonidan yangilanadi va View ma’lumotlarni oladi. Model komponenti ajratilganligi sababli uni UI dan mustaqil ravishda alohida sinab ko’rish mumkin. Bundan tashqari, agar View qatlami single responsibility* tamoyiliga rioya qilsa, ularning vazifasi har bir foydalanuvchi harakati uchun Controllerni yangilash va hech qanday biznes logikani ishlatmasdan, Modeldagi ma’lumotlarni ko’rsatishdir. Bunday holda, UI testlari View funksiyalari uchun yetarli bo’lishi kerak.
bu tamoyil har bir klass bitta mas’uliyat, bitta maqsadga ega bo’lishi kerakligini bildiradi. Boshqa so’z bilan aytganda, har bir klass faqat bir ishni bajaradi.
MVC arxitektura pattern ni aniqroq tushunish uchun quyida bir android ilovani misol tarzda ko’rib chiqamiz. Ushbu ilovada 3 ta tugma bo’ladi va ularning har biri foydalanuvchi tugmani necha marta bosganligini ko’rsatadi. Ushbu dasturni ishlab chiqish uchun quyida kodlarni bir nechta bo’limlarga ajratib chiqamiz:
Conroller va View Activity tomonidan boshqariladi. Qachonki foydalanuvchi tugmachalarni bossa, activity modelga keyingi operatsiyalarni boshqarishga yo’naltiradi. Activity observer(kuzatuvchi) vazifasini bajarib turadi.
Model ko’rsatiladigan ma’lumotlarni o’z ichiga olgan alohida class bo’ladi. Ma’lumotlar bo’yicha operatsiyalar ushbu klass funksiyalari tomonidan bajariladi va ma’lumotlar yangilanganidan so’ng, Observable klass **Observer(Activity)**ga o’zgarish haqida xabar beradi.
Quyida MVC arxitektura pattern dan foydalangan holda ushbu android ilovani bosqichma-bosqich tushuntirib keltirilgan: