bitta sinf misoliga ega bo'lgan sinfni oling
Bunday holda, ushbu sinfga kirgan har bir kishi bir xil misolni oladi .
afzal - ip xavfsizligi uchun - fuqaroligi bo'lmagan bo'lishi kerak ( Fuqaroligi bo'lmaganlar haqida ma'lumotni https://vertex-academy.com/tutorials/en/stateless-i-immutable-java/ saytidan olishingiz mumkin ).
Aynan shu sinf Singleton deb ataladi .
Singleton EMAS nima ?
Singleton Bu usul emas, bu sinf.
Singleton sinf yaratish uchun tayyor retsept emas . Sinfni singleton qilishning bir necha yo'li mavjud - biz ularni keyinroq ko'rib chiqamiz. Ammo bu sinflarni "to'ldirish" sizga bog'liq.
Singleton o'zgarishi mumkinmi ?
Singleton holati ham o'zgaruvchan, ham o'zgarmas bo'lishi mumkin.
1-misol - o'zgaruvchan Singleton
Tasavvur qiling, sizning qo'shningiz Vasya bor. Vasya xaker va sizning pochtangizni buzmoqchi. U parollarni birma-bir taxmin qiladi va ularni birma-bir kiritadi.
Bunday Vasyadan himoya qilish uchun blokirovka ixtiro qilingan. Ya'ni, masalan, siz parolni 5 marta noto'g'ri kiritdingiz, tamom - siz bloklangansiz - va 30 daqiqa davomida siz hech qanday parol kirita olmaysiz.
Va endi tasavvur qilaylik, siz o'zingizning serveringizda bunday Vasyadan himoya tizimini joriy qilishingiz kerak.
E'tibor bering, bir nechta kiritishni kuzatish, ko'rinadigan darajada oson emas. Bir vaqtning o'zida serveringizga katta hajmdagi ma'lumotlar yuboriladi.
Bundan tashqari, Vasya turli IP-manzillardan parolni kiritishga harakat qilishi mumkin, bu esa vazifani yanada murakkablashtiradi. Lekin biz qandaydir tarzda ma'lum bir hisobga kirishga urinishlar sonini nazorat qilishimiz kerak.
Singleton bizga yordam beradi !
Singleton shablonini amalga oshiradigan sinfga yo'naltiramiz . (Axir biz bu ma'lumotni faqat bitta "nuqta"da saqlashimiz kerak). Bu sinf saytga kirish uchun muvaffaqiyatsiz urinishlar sonini hisoblab chiqadi.
Bu holda, bizning Singleton o'zgaruvchan bo'ladi - har safar hisobimizga kirishga urinilganda, urinishlar sonini hisoblaydigan o'zgaruvchi o'zgaradi.
Shunday qilib, bu muammoni hal qilish uchun bizga o'zgaruvchan Singleton kerak edi .
Do'stlaringiz bilan baham: |