Singleton Pattern
Singleton Pattern nima?
Section titled “Singleton Pattern nima?”Singleton Pattern — bu creational design pattern bo‘lib, u class (klass) yoki objectning faqat bir marta instantiate bo’lishini kafolatlaydi va unga global tarzda murojaat qilish imkonini beradi. Ushbu yagona instance butun application bo‘ylab ulashilishi mumkin, shu sababli Singletonlar application ichida global stateni boshqarish uchun juda qulay hisoblanadi.
Frontend ilovalarda bu pattern ko‘pincha:
- global state
- konfiguratsiya
- logger
- API client
- cache yoki service manager
uchun ishlatiladi.
Implementation
Section titled “Implementation”ES6 Class
Section titled “ES6 Class”ES2015 class yordamida singleton yaratish quyidagi tarzda amalga oshiriladi:
class ConfigService { static instance;
constructor() { if (ConfigService.instance) { return ConfigService.instance; }
this.apiUrl = "https://api.example.com"; ConfigService.instance = this; }
getApiUrl() { return this.apiUrl; }}
// Foydalanishconst c1 = new ConfigService();const c2 = new ConfigService();
console.log(c1 === c2); // trueBu yerda classni qayta chaqirsak ham, doim bitta instance qaytaradi va xotirani tejashimizga yordam beradi.
Closure
Section titled “Closure”Biz class dan foydalanmasdan ham to‘g‘ridan-to‘g‘ri singleton yaratishimiz mumkin, bu esa ancha sodda va toza code yozishga olib keladi.
Oddiy closure yordamida singleton yaratish uchun biz quyidagilarni bajarishimiz kerak:
const Singleton = (function () { let instance;
function createInstance() { return { apiUrl: "https://api.example.com", logApiUrl: () => console.log("https://api.example.com"), }; }
return { getInstance() { if (!instance) { instance = createInstance(); } return instance; }, };})();
// Foydalanishconst a = Singleton.getInstance();const b = Singleton.getInstance();
console.log(a === b); // true