O‘zbekiston respublikasi axborot texnologiyalari va



Yüklə 60,21 Kb.
səhifə2/2
tarix25.12.2023
ölçüsü60,21 Kb.
#196573
1   2
Документ DOC

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.


public class Singleton
{
private static Singleton instance;
private static readonly object lockObject = new object();

private Singleton() { }

public static 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.
public class AppConfig
{
private static AppConfig instance;
private static readonly object lockObject = new object();

public string ApplicationName { get; set; }
public string DatabaseConnectionString { get; set; }
// Other configuration properties

private AppConfig()
{
// Perform initialization tasks
ApplicationName =
"MyApp";
DatabaseConnectionString =
"connectionString";
}

public static AppConfig Instance
{
get
{
if (instance == null)
{
lock (lockObject)
{
if (instance == null)
{
instance =
new AppConfig();
}
}
}
return instance;
}
}

// Additional methods and properties
}

// Usage
public void SomeMethod()
{
AppConfig config = AppConfig.Instance;
string appName = config.ApplicationName;
string connectionString = config.DatabaseConnectionString;
// Example: Logging the application name
Console.WriteLine(
$"Application Name: {appName}");

// 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.
Yüklə 60,21 Kb.

Dostları ilə paylaş:
1   2




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin