Statik kirish usuli: namunaga kirish uchun statik usul taqdim etilishi kerak. Bu usul namuna mavjudligini tekshiradi va yangisini yaratadi yoki mavjud namunani qaytaradi.
Mavzu xavfsizligi: Agar dastur ko'p tarmoqli bo'lsa, misol yaratishda ip xavfsizligini ta'minlash uchun qulflar yoki ikki marta tekshirilgan qulflash kabi tegishli sinxronizatsiya mexanizmlaridan foydalanish kerak.
Misol - Logger klassidagi Singleton Pattern:
C# da Singleton naqshini amalga oshirish uchun biz uchta muhim jihatni ko'rib chiqishimiz kerak: xususiy konstruktor, sinfning shaxsiy statik nusxasi va misolga kirish uchun umumiy statik usul.
publicstatic Singleton Instance
{
get {
if (instance == null)
{
lock (lockObject)
{
if (instance == null)
{
instance = new Singleton();
}
}
}
return instance;
}
}
// Additional methods and properties can be added here }
Ushbu misolda Singleton klassi tashqi sinflardan to'g'ridan-to'g'ri instantsiyani oldini olish uchun shaxsiy konstruktorga ega. Maxsus statik misol o'zgaruvchisi sinfning yagona nusxasiga havolani saqlaydi. Biz ishga tushirish bosqichida ip xavfsizligini ta'minlash uchun qulflash bayonotida ikki marta tekshirilgan qulflash mexanizmidan foydalanamiz. Umumiy statik xususiyat, Instance, Singleton misoliga kirishni ta'minlaydi va agar u mavjud bo'lmasa, uni dangasalik bilan yaratadi.
Singleton Pattern-dan foydalanishga misol: Keling, kodlar bazasining turli qismlaridan foydalanish mumkin bo'lgan global dastur konfiguratsiyasini saqlashimiz kerak bo'lgan stsenariyni ko'rib chiqaylik.
publicclassAppConfig {
privatestatic AppConfig instance;
privatestaticreadonlyobject lockObject = newobject();
// Example: Connecting to the database var dbConnection = new SqlConnection(connectionString);
dbConnection.Open();
// Perform database operations
// Additional code using the configuration } Ushbu misolda biz dastur konfiguratsiyasini ifodalovchi “AppConfig” sinfini yaratamiz. Sinf "AppConfig" ning faqat bitta nusxasi mavjud bo'lishini ta'minlaydigan Singleton naqshiga amal qiladi. Instance xususiyati singleton nusxasiga kirishni ta`minlaydi va turli xil konfiguratsiya xususiyatlariga kirish va o'zgartirish mumkin.
Foydalanish stsenariysi Singleton namunasi ilovaning bir nechta qismlariga bir xil konfiguratsiya namunasiga kirishga qanday ruxsat berishini ko'rsatadi. Bunday holda, biz dastur nomini qayd qilamiz va konfiguratsiyaning ulanish qatoridan foydalanib ma'lumotlar bazasiga ulanamiz.
Xulosa: Singleton dizayn namunasi sinfning faqat bitta nusxaga ega bo'lishini ta'minlash mexanizmini taqdim etadi va ushbu misolga global kirish imkonini beradi. U dangasa ishga tushirish, global mavjudlik va ip xavfsizligi kabi afzalliklarni taqdim etadi. Biroq, undan oqilona foydalanish kerak, chunki noto'g'ri amalga oshirish qattiq ulanishni keltirib chiqarishi va sinovga to'sqinlik qilishi mumkin. Singleton naqshini tushunish va uni to'g'ri amalga oshirish dasturiy ta'minot tizimining dizayni va samaradorligini sezilarli darajada oshirishi mumkin.