Oldingi dars qism muhitni qanday o‘zgartirishi haqida edi — effekt. Bu dars qism muhitdan nimani talab qilishi haqida — koeffekt. Agar oldingi o‘lcham «qism atrofni qanday o‘zgartiradi» bo‘lsa, bu o‘lcham «qism atrofdan nimaga muhtoj».
Nomlar jadvali
Boshlang‘ich nuqta — nomlarni imkoniyatlarga (capability) bog‘laydigan jadval. Dependency injection bilan ishlagan har kim buni tanish deb topadi.
Chiroyli tomoni keyingi qadamda: bog‘liqlikni jadvalga ro‘yxatdan o‘tkazish — muhitga o‘zgarish kiritish bilan aynan bir xil shaklga ega. Demak, oldingi bobdagi mexanizm o‘zgarmasdan qo‘llanadi. Bog‘liqliklar boshqa effektlar kabi kuzatiladi va olib tashlanadi.
Aktivlashish va deaktivlashish
Yo‘q narsaga qo‘l cho‘zish — runtime xatosi. Oqilona yo‘l: qism faqat e’lon qilgan hamma narsa mavjud bo‘lganda aktivlashadi.
Jadvalga har bir o‘zgarish xuddi o‘sha yerda tasniflanadi:
| O‘zgarish | Qachon | Tizim nima qiladi |
|---|---|---|
| Activation | Qism so‘ragan hamma narsa mavjud | Uni ishga tushuradi |
| Deactivation | Qism ega bo‘lgan narsa yo‘qoladi | Inverslar stack’ini qo‘llaydi va olib tashlaydi |
| Irrelevant | So‘ralgan narsa o‘zgarmagan | Hech narsa qilmaydi |
Mexanizm hal qilmaydigan yarm
Aynan shu yerda maqola to‘xtab qolmaydi — halol bo‘ladi. Provayder va iste’molchi o‘rtasidagi tartib faqat bir yo‘nalishda ishlaydi.
- Agar A biror narsani taqdim etsa va B unga muhtoj bo‘lsa, B A’dan oldin aktivlasha olmaydi. Bu yo‘nalish ishlaydi.
- Teskari yo‘nalish ishlamaydi. A’ni tushirish B’ga kerak narsani buzadi. Ammo bildirishnoma o‘z-o‘zidan imkoniyatni B’ning butun teardown’i davomida saqlab turolmaydi, A’ning tozalashini ham B tugaguncha ushlab turolmaydi.
Ma'lumot
Yechim — teardown'ni ikki qadamga bo‘lish. Maqola buni bezaksiz aytadi: bu harakat qilayotgan qismga emas, boshqa qismlarga qo‘yilgan shart — demak yuqori darajaga tegishli va alohida mexanizm talab qiladi. Mexanizm mavjud: darhol taqdim etishni to‘xtatish, lekin bog‘liqlar tugaguncha tozalashni kutish.
Ikki foydali kengaytma
| Kengaytma | Nima beradi |
|---|---|
| Isolation | Xuddi shu nom kim so‘rayotganiga qarab turli narsalarga ishora qiladi. Multi-tenancy, testlash va cheklangan muhitlar uchun foydali |
| Interception | Atrofdagi muhit qism kodiga tegmasdan, uning imkoniyatdan foydalanishini shartlaydi. Muhit sozlamalari qism e’lon qilgan sozlamalardan ustun turadi |
Ikki o‘lcham o‘rtasidagi ko‘prik
Bu maqolaning eng chiroyli qismi — va xulosalarda eng ko‘p yo‘qoladigani.
Oldingi bobdagi mustaqillik — bekor qilish tartibini erkin qiladigan xossa — taxmin qilinishi shart emas. U bog‘liqliklarning xossasidan kelib chiqadi:
- Turli nomlarda ishlaydigan ikki qism mustaqil — nuqta.
- Bitta nomni bo‘lishsa, shu nomning tartibi muhim bo‘lmagan interfeysi bo‘lsa yetarli.
Ya’ni temporal o‘lcham spatial o‘lchamga tayanadi. Va bu abstrakt matematik shartni aniq interfeys qaroriga aylantiradi — dizayner nazariyani isbotlash o‘rniga interfeysni to‘g‘ri loyihalashi kifoya.
Maqola nomlagan ikkita chegara
Muhim
Birinchidan, har bir umumiy holatni nomga bog‘lash — paradigmning intizomi, avtomatik xossa emas. Nom orqali ro‘yxatga olinmaydigan narsa teorema doirasidan tashqarida qoladi. Ikkinchidan, nomdagi tartib mustaqilligi — uni taqdim etuvchining majburiyati, iste'molchining emas.
Xulosa
- Koeffekt — qismning tashqi muhitdan talabi: nom → capability jadvali.
- Bog‘liqlikni ro‘yxatdan o‘tkazish effekt kabi ishlaydi: kuzatiladi va bekor qilinadi.
- Qism faqat hamma talabi mavjud bo‘lganda aktivlashadi; talab yo‘qolsa — deaktivlashadi.
- Provayder/iste’molchi teardown tartibi faqat bir yo‘nalishda oson; teskari yo‘nalish yuqori darajadagi mexanizmni talab qiladi.
- Mustaqillik bog‘liqlik xossasidan kelib chiqadi — temporal o‘lcham spatial o‘lchamga tayanadi.
Keyingi darsda hammasi bir joyga yig‘iladi: hisob (calculus) va beshta teorema.