Android uchun yangi boshlanuvchilar uchun Dagger 2 - Kirish

Dagger - bu Java va ham Android uchun to'liq statik, kompilyatsiya qilinadigan vaqtga bog'liqlik in'ektsiyasi. Bu Square tomonidan yaratilgan va hozirda Google tomonidan saqlanadigan oldingi versiyasining moslashuvi. (manba)

Kim o'qishi kerak?

Agar siz Android bilan to'g'ridan-to'g'ri boshlagan va Java-ni teng ravishda o'rganadigan Android-dasturchisi bo'lsangiz - bu siz uchun. Yoki agar siz Dagger 2-ni o'rganishga urinayotgan bo'lsangiz va boshqa onlayn tarkibni tushunish qiyin bo'lsa - xavotirlanmang, men ham juda qiyin vaqtni boshdan kechirdim (biz unchalik alohida emasmiz, bizga boshqacha tushuntirish kerak ) va bu albatta siz uchun. Agar siz allaqachon DI va xanjarni boshdan kechirgan bo'lsangiz, unda siz biron bir yangi narsani olishingiz yoki aniqroq tushunishingiz mumkin (yoki juda yangi boshlanayotgan bo'lishi mumkin).

Pitstoplar seriyasi

  • Android uchun yangi boshlanuvchilar uchun Dagger 2 - Kirish (siz shu erda)
  • Android uchun yangi boshlanuvchilar uchun Dagger 2 - I qism
  • Android uchun yangi boshlanuvchilar uchun xanjar 2 - II qism
  • Android uchun yangi boshlanuvchilar uchun xanjar 2 - xanjar 2-qism
  • Android uchun yangi boshlanuvchilar uchun xanjar 2 - xanjar 2 qismi II
  • Android uchun yangi boshlanuvchilar uchun Dagger 2 - Dagger 2 I-qism
  • Android uchun yangi boshlanuvchilar uchun xanjar 2 - Dagger 2 Advanced qism II

Talablar

Siz Java dasturlash tili, OOP tamoyillari va Android-ning rivojlanishi bilan tanishsiz deb o'ylayman.

Bog'lanish nima?

Izoh: Quyidagi tushunchani tushuntirish uchun men Game of Thrones-ga o'xshashlikdan foydalanyapman. Agar siz bu bilan tanish bo'lmasangiz, iltimos, davom etayotganingizda sinf sinflarini - Targaryens va Dragonsni A va B bilan almashtiring. Va, albatta, lekin ushbu seriyani ko'rishni boshlashingiz kerak: -P

Bog'lanish / bog'lanishni tushunish, ob'ektga yo'naltirilgan dasturiy tushunchalarda yanada ravshanlikka erishish uchun birinchi qadamdir. Xo'sh, qaramlik nima? Masalan, bizda Targaryens deb nomlangan sinf mavjud, u Targaryens sinfida Dragons deb nomlangan boshqa sinf yoki interfeysdan foydalanadi - keyin Targaryens klassi yoki Dragons interfeysiga bog'liq.

Bu shuni anglatadiki, Targaryens ajdarlarsiz ishlay olmaydi. Bu shuni anglatadiki, Targaryens qaerda bo'lmasin, Dragons u erda bo'lishi kerak, ya'ni biz Dragons-dan foydalanmasdan Targaryens-dan foydalana olmaymiz. Shunday qilib, ushbu stsenariyda Targaryens qaramlik, Dragonlar esa qaramlik deb ataladi. A qaramlik uning qaramliklariga bog'liq.

Bir-birini ishlatadigan ikkita sinflar "bog'langan" deb nomlanadi. Sinflar orasidagi o'zaro bog'liqlik ikkilik emas - bu "tor" (kuchli) yoki "bo'sh" (zaif). Bu bog'liqliklar har doim yo'naltiruvchidir, ya'ni Targaryens Dragonlarga bog'liq, ammo Dragons Targaryensga bog'liq bo'lmasligi mumkin.

Nima uchun qaramlik yomon?

Sinf atrofida ko'plab bog'liqliklar mavjud bo'lsa, bu qattiq bog'liqlik muammolariga olib keladi - quyidagi sabablarga ko'ra yomon

  • Qattiq qaramlik qayta ishlatishni kamaytiradi
  • Qattiq qaramlik sinovlarni qiyinlashtiradi
  • Qattiq qaramlik, loyiha miqyosi kengayganda kodning barqarorligiga to'sqinlik qiladi

#Reusablility

Agar darslar va usullar bo'sh yoki birlashtirilmasa yoki ko'p narsaga bog'liq bo'lmaganda, qayta ishlatiladigan tabiat kuchayadi. Qayta foydalanish imkoniyati ob'ektga yo'naltirilgan dasturlashning asosiy buyruqlaridan biridir.

# Sinov

Sinov uchun siz ba'zi ob'ektlarni masxara qilasiz. Ammo usul yoki sinf ichida juda ko'p bog'liqliklar mavjud bo'lsa, sinash qiyin bo'ladi. Agar java sinfi yangi operator orqali boshqa sinf namunasini yaratsa, u holda ushbu sinfdan mustaqil ravishda foydalanish va sinab ko'rish mumkin emas.

# Muvaffaqiyatlilik

Agar sizning kodingiz to'g'ri sinovdan o'tkazilmasa va tarkibiy qismlardan qayta foydalanish mumkin bo'lmasa va sizning loyihangiz o'sishda davom etsa, uni saqlash juda qiyin bo'ladi. Saqlash qobiliyati ko'plab boshqa omillarni o'z ichiga oladi, ammo sizning guruhingizdagi yangi ishlab chiquvchilar tizimni tushunadigan va ishlab chiquvchilarning ishini qulaylashtiradigan bo'lsa, siz borishingiz kerak.

Bog'lanish turlari

Bog'lanish turlari ko'p, keng tarqalgan turlari

  • Sinfga bog'liqlik
  • Interfeysga bog'liqlik
  • Usul / maydonga bog'liqlik
  • Bevosita va bilvosita qaramlik

Va bu erda qo'shilmagan kam sonli bog'liqliklar mavjud.

# Klassga bog'liqlik

Sinfga bog'liqlik bu sinflarga bog'liqlikdir. Biz oldin sinfga bog'liqlik misolini ko'rganmiz, Targaryens konstruktor usuli callForWar () ni chaqirish uchun Dragons sinfiga bog'liq yoki kerak.

# Interfeysga bog'liqlik

Interfeysga bog'liqlik - bu interfeyslarning bog'liqliklari. ExecutePlan usuli qaramlik sifatida WarStrategy interfeysini oladi. WarD mustaqillik barcha uylar tomonidan amalga oshiriladi (Targaryens, Starks, Lannister va boshqalar).

# Metod yoki sohaga bog'liqlik

Usul yoki maydonga bog'liqlik bu aniq usul yoki ob'ektning maydoniga bog'liqlikdir. Quyidagi usul sinf ob'ektini oladi va getKing () usuli - bu usul deklaratsiyasi bilan aniqlab bo'lmaydigan usulga bog'liqlik.

# Bilvosita va bilvosita qaramlik

Boshqa bir misol bilan buni buzishga ijozat bering. Targaryens sinfi taxtni egallash uchun Starks sinfiga bog'liq. Ammo Starks Shimoldagi boshqa qirolliklarga, Mormont sinfiga bog'liqdir, shuning uchun hozirda Targaryens bilvosita Mormontga va to'g'ridan-to'g'ri Starksga qaramdir.

TL; DR

Agar java sinfi yangi operator orqali boshqa sinfning namunasini yaratsa, u holda ushbu sinfdan mustaqil ravishda foydalanish va sinash mumkin emas va unga bog'liqlik deyiladi.

Bog'lanish juda yomon, chunki u butun loyiha davomida kodni qayta ishlatishga xalaqit beradi va sinov ishini qiyinlashtiradi - buning natijasida kodni saqlashga to'sqinlik qiladi.

Bog'lanish sinf, interfeys, usul yoki maydon, to'g'ridan-to'g'ri va bilvosita va hokazo kabi ko'plab turlarga bo'linadi.

Keyingisi nima?

Keyingi tepada, ushbu qattiq qaramlik muammosini hal qilish haqida gaplashamiz - ha, siz haqsiz: qaramlik in'ektsiyasi. Haqiqiy stsenariydan o'tamiz, qattiq qaramlikni aniqlaymiz va tahlil qilamiz.

Bundan tashqari, mening boshqa hikoyalarimni ko'rib chiqing.

Tavsiya etilgan o'qish

Ushbu maqolani o'qish uchun qimmatli vaqtingizni sarflaganingiz uchun tashakkur. Yoqdimi? "Rahmat!" Deb ayting va others boshqalarga ushbu maqolani topishda yordam berish uchun uni ulashing.