Aklımda Kalası Kelimeler

* давайте работать вместе
* Zarf ve Mazruf, Zerafet(xHoyratlık) ile aynı kökten(za-ra-fe) gelir
* Bedesten
* Suç subuta ermiştir - Suç sabit olmuştur

21 Nisan 2015 Salı

Javascript Singleton Pattern


function Single(){
  if(Single.caller !== Single.getInstance){
     throw new Error("new ile çalıştırılamaz");
  }

  this.dt = new Date();
}

Single.getInstance = function() {
  // Single sınıfına ait instance static özelliği yaratılmadan önce
  console.dir(this);
debugger;
  if(this.instance === undefined){
    // this tanımı doğrudan sınıfı yani Single fonksiyonunu işaret edecektir
    this.instance = new Single();
  
    // Single sınıfının instance static özelliği yaratıldı
    // Ve bundan sonra bir daha yaratılmayıp sınıfa bağlı instance nesnesi gönderilecek
    console.dir(this);
  }
  return this.instance
}

// Single sınıfının static fonksiyonu olan getInstance üstünden tekil nesne çağırılır
a = Single.getInstance();

// new Anahtarıyla Single sınıfından bir nesne tanımlanamaz
a = new Single();

Peki node.js içinde nasıl olurdu? Unutmamalı ki require ile çağırdığımız tüm js dosyaları memorye bir kez yüklenir ve her require ile çağrıldığında artık file i/o yapmak yerine bellekten getirilir. Ve biz objemizi bir kez module.exports içine koydukmu bir daha yaratmak durumunda olmayız. Yukarıdaki kodu single.js olarak sakladığımızı düşünelim.
single.js
module.exports = Single.getInstance()
çağırdığımız dosya.js olsun:
module.exports = require('./single.js')

Hiç yorum yok: