Android dasturlashda Singleton tushunchasi
Hammaga salom! Bu maqolada men Singleton tushunchasi va uni Android ilovalaringizda qanday ishlatishingiz haqida ma’lumot beraman.
Singleton nima?
Misol ko’rishdan avval biz singleton nima ekanligini bilishimiz kerak. Singleton — bu Android ilovalarida ishlatiladigan dizayn patternlardan biri va bu classning obyektini faqat bir marotaba yaratish bilan cheklashni anglatadi.
Nima uchun biz Singleton-dan foydalanishimiz kerak?
Faraz qilaylik, sizning loyihangiz ma’lumotlarini saqlaydigan DataService nomli classga ega. Shunday qilib, har safar ma’lumotlarni yuklamoqchi bo’lganingizda, DataService classining yangi obyektini yaratasiz va keyinchalik kerakli ma’lumotlarni yuklash uchun uning metodlaridan birini chaqirasiz. Ehtimol, sizga dasturingizda ushbu class Singleton toifasida emasligi hech qanday zarari yo’qdek tuyilishi mumkin, ammo sizning loyihangiz kattalashib borishi bilan siz tizim xotirasiga keraksiz vazifalarni yuklay boshlaysiz.
Loyihalarimizda Singleton-dan qanday foydalanish kerak?
Singleton nima ekanligini va uni nima uchun ishlatishimiz kerakligini tushunib oldik. Endi esa uni qanday ishlatishni o’rganish vaqti keldi. Biz Singleton-dan private (ko’rinish modifikatori) konstruktorga ega bo’lgan va bir vaqtning o’zida faqat bitta obyektga ega bo’lgan class sifatida foydalanamiz. Agar biz Singleton classini birinchi marta yaratishga harakat qilsak, yangi o’zgaruvchi bizda yaratilgan birinchi class namunasi (instance) ni o’zlashtirib oladi. Shunday qilib, biz bir nechta obyekt yaratishdan qochamiz. Keling endi ushbu tushunchani kod misolida ko’ramiz:
MySingleton.java
class MySingleton{ // Obyektni o'zida saqlaydigan static o'zgaruvchi private static MySingleton singleInstance= null; public String data; //Private modifikatoriga ega konstruktor private MySingleton(){ data = "Singleton classidagi matn"; } // Singleton obyektini yaratish uchun statik metod public static MySingleton getInstance(){ if (singleInstance== null) singleInstance= new Singleton(); return singleInstance; }}
MainActivity.java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // data1 o'zgaruvchiga MySingleton classini o'zlashtirish MySingleton data1= MySingleton.getInstance(); // data2 o'zgaruvchiga MySingleton classini o'zlashtirish MySingleton data2 = MySingleton.getInstance(); // data3 o'zgaruvchiga MySingleton classini o'zlashtirish MySingleton data3 = MySingleton.getInstance(); // Yuqoridagi o'zgaruvchilarni hashCode yordamida tekshiramiz System.out.println("Data1: " + data1.hashCode()); System.out.println("Data2: " + data2.hashCode()); System.out.println("Data3: " + data3.hashCode()); // Uchta o'zgaruvchilarni tekshiramiz if (data1== data2 && data2 == data3) { System.out.println( "Uchta o'zgaruvchi ham bitta obyekt va xotirada bitta joyni egalladi"); } else { // Ekranga chiqazamiz System.out.println( "Uchta o'zgaruvchi ham xotirada uch xil joyga ega"); } } }
Natija:
Data1: 558638686 Data2: 558638686 Data3: 558638686 Uchta o'zgaruvchi ham bitta obyekt va xotirada bitta joyni egalladi
Shu tariqa biz Singleton patternidan foydalanib yozgan kodlarimizni yanada optimal holatga olib kelish imkoniga ega bo’lamiz.
Manba:
Android Dasturlash
Android dasturlashda Singleton tushunchasi