Android dasturlashda Singleton tushunchasi

Android dasturlashda Singleton tushunchasi

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