Published on

Swiftda Singleton

Authors

Bilimingizni sinab ko'ring!

20 ta savol Β· ~20 daqiqa

Swiftda Singleton β€” bu classning faqat bitta obyektga ega bo'lishini ta'minlaydigan dizayn patterni. Bunday class singleton class deyiladi.

Singleton class yaratish uchun ba'zi qoidalarga rioya qilishimiz kerak:

1. Private Initializer yaratish

Initializer classdan obyekt yaratish imkonini beradi. Va classning initializerini private qilish class tashqarisidan obyekt yaratishni cheklaydi.

class FileManager {
 
  ... 
  // private initializer yaratish
  private init() {
  }
}

// Xato kod
let obj = FileManager()

Bu yerda FileManager classining initializeri private. Shuning uchun class tashqarisidan FileManager obyektini yaratishga uringanimizda xato olamiz.

2. Static turli Singleton obyekt yaratish

Singleton classda classning bitta static turli obyektini yaratamiz. Obyektni static qilish class nomi yordamida obyektga murojaat qilish imkonini beradi.

class FileManager {
  
  // singleton yaratish uchun static property
  static let fileObj = FileManager()
  ... 
}

// singletonga murojaat
let data = FileManager.fileObj

Bu yerda FileManager class nomi yordamida fileObj obyektiga murojaat qilyapmiz.

Misol:

Swift
Singleton Pattern
class FileManager { // singleton yaratish static let fileObj = FileManager() // private initializer yaratish private init() { } // fayl so'rash uchun metod func checkFileAccess(user: String) { // foydalanuvchi nomini tekshirish sharti if user == ("@programiz.com") { print("Kirish ruxsat etildi") } else { print("Kirish rad etildi") } } } let userName = "@programiz.com" // metodga murojaat let file = FileManager.fileObj file.checkFileAccess(user: userName)

Yuqoridagi misolda singleton class FileManager yaratdik. Singleton class bo'lgani uchun initializerni private qildik va fileObj nomli static obyekt yaratdik.

Quyidagi qatorga e'tibor bering:

var file = FileManager.fileObj
file.checkFileAccess(user: userName)

Bu yerda FileManager class nomi yordamida fileObj obyektiga murojaat qildik. Keyin checkFileAccess() metodiga murojaat qildik.

Dizayn pattern β€” bu butun dunyo dasturchilar tomonidan qo'llaniladigan turli kodlash usullarini o'z ichiga olgan kod kutubxonasi kabi.

Shuni ta'kidlash kerakki, singletonlardan foydalanish mantiqiy bo'lgan vaziyatlar kam (masalan, fayllarni boshqarish, API so'rovlari). Agar singletonlardan foydalanish kerakmi yoki yo'qligiga ishonchingiz komil bo'lmasa, ulardan butunlay foydalanmaslikni tavsiya qilamiz. Ko'proq ma'lumot: What is so bad about Singleton?

Buy mea coffee