Singleton Örüntüsünde amacımız sınıfımıza ait sadece bir tane nesne yaratmak ve bu sınıfa erişmek istediğimizde bize aynı nesnenin refaransını döndermesidir.
Anahtar Sözcükler:
Amaç: Sadece bir tane nesne yaratmak ve nesne global tanımlanmayacak.
Problem:Birden fazla istemcinin bir sınıfa ait nesneye ihtiyaç duyması durumunda, dikkat edilmesi gereken istenen sınıfa ait birden fazla nesne yaratmamak.
Çözüm : Sadece bir nesne yaratmayı garanti etmek.
Kodlarken:
1) İstenen sınıfın üyesini static ve private tanımlamak ve başlangıçta ki değerine NULL atamak.
2) Constructor’ı protected ve private belirtmek.
Burda dikkat edilmesi gereken durumlardan biride sınıfa ait nesneyi yaratırken iki farklı istemcinin aynı anda sınıfı yaratan methoda erişmesidir. Burada çoklu thread’den bahsediyoruz. İki thread’in, sınıfı yaratan metoda aynı anda erişmesi, sınıda ait nesnenin yaratılmadığını varsayarsak, aynı anda ikisinin sınıfa ait nesneyi yaratmaya çalışması sıkıntıya neden olacaktır, bu nedenle yapacağımız Java örneğinde synchronized kullanacağız, bu da ikili kitlemeyi engelleyecek. İlk görev senkronize’ye girdi mi diğer görevler ilk görevin çıkmasını beklemek zorundadır, bu da kilitlenme sorununu çözer.
//wikipedia J Java5
public class Singleton {
private static volatile Singleton INSTANCE = null;
private Singleton() {}
public static Singleton getInstance() {
if (INSTANCE == null)
synchronized(Singleton.class) {
if (INSTANCE == null)
INSTANCE = new Singleton();
}
return INSTANCE; }
}
14 Nisan 2008 Pazartesi
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder