sinan ilyas
Makale Kategorileri
Son Makaleler
Yürüyen Merdivenlerde El Bantları Neden Basamaklardan Daha Hızlı İlerler?
Uzak Masaüstü Bağlantı Hatası: Data Encryption Error
ADSL Modem Telefon Hattına Splitter Kullanmadan Bağlanabilir Mi?
Singleton: Bir Sınıftan Sadece Bir Örnek Oluşturma
Varolan Veri Tiplerine Metot Ekleme
Visual Studio'da Linq-to-Sql Sorgularını Görmek
Resim Dosyasındaki Yazının Fontunu Bulan Site
MSSQL Server'da Bozulmuş Model Veritabanı Nasıl Düzeltilir?
Sinan İLYAS 24 Şubat 2010 Çarşamba 19:04
Tüm projenizde kullanacağınız bazı sınıflar olabilir. Örneğin, veritabanı bağlantısı için kullandığınız bir sınıftan, veya log kaydetmek için kullandığınız bir sınıftan, her sayfada ya da her formda ayrı ayrı yeni bir örnek oluşturmak istemeyebilirsiniz.
Singleton tasarım deseni ile bu mümkün. En özet şekilde anlatırsak, singleton tasarım deseni ile, bir sınıftan her ihtiyaç duyulduğunda yeni bir nesne oluşturulmaz; sadece ilk ihtiyaç duyulduğunda yeni bir nesne oluşturulup, daha sonra ihtiyaç duyulduğu durumlarda hep ilk oluşturulan nesne kullanılır.
Bir örnekle açıklayalım. Veritabanı bağlantısı için kullandığımız, Veritabani isimli bir sınıfımız olsun:
// Veritabanı bağlantısı için kullandığımız kodlar
public class Veritabani
{
/* Veritabanı bağlantısı için gerekli kodlar */
}
Şimdi bu sınıftan iki nesne oluşturalım:
// Veritabanı sınıfından bir örnek oluşturuldu Veritabani vt1 = new Veritabani(); // Veritabanı sınıfından başka bir örnek oluşturuldu Veritabani vt2 = new Veritabani();
Yukarıdaki kodda oluşturulan vt1 ve vt2 birbirinden bağımsız ayrı iki nesnedir. Hafızada ayrı ayrı yer işgal ederler.
Şimdi Veritabani sınıfımızdan sadece bir örnek oluşturulabilmesi için singleton tasarım deseni kullanalım:
public sealed class SingletonVeritabani
{
private static SingletonVeritabani _ornek = null;
private static readonly Object _kilit = new Object();
private SingletonVeritabani()
{
/* Yapıcı fonksiyon içinde çalıştırılacak kodlar */
}
// Daha önceden örnek oluşturulmuşsa, eski örneği döndürür.
// Daha önceden örnek oluşturulmamışsa, yeni örnek oluşturup, bu örneği döndürür.
public static SingletonVeritabani Ornek()
{
if (_ornek == null)
{
lock (_kilit)
{
if (_ornek == null)
{
_ornek = new SingletonVeritabani();
}
}
}
return _ornek;
}
}
Şimdi, bu sınıfı kullanalım:
// Veritabanı sınıfından bir örnek oluşturuldu Veritabani vt1 = SingletonVeritabani.Ornek(); // Veritabanı sınıfından yeni bir örnek oluşturulmadı // Önceden oluşturulmuş olan örnek vt2 değişkenine atandı Veritabani vt2 = SingletonVeritabani.Ornek();
Yukarıdaki kodda oluşturulan vt1 ve vt2 iki farklı nesne değil, aslında aynı nesnedir.
Singleton tasarım desenini yukarıdaki örnekteki gibi kullanırsanız, multithread uygulamalarda da güvenle kullanabilirsiniz.
Anahtar Kelimeler: visual studio, vs, visual studio 2005, visual studio 2008, vs2005, vs 2008, dotnet, .net, asp.net, c#, csharp, c sharp, singleton, tasarım deseni, design pattern, sınıf, class, instance, örnek, static, multithread, threadsafe
Kategori: Programlama > C#
Bu makaleye henüz hiç yorum yapılmamış.
© 1997- Sinan İLYAS
Site içeriği kaynak gösterilmeden kopyalanamaz.
Site tasarım şablonu Free CSS Templates sitesinden alınarak düzenlenmiştir.
Copyright © 2007 Ornate. All Rights Reserved. Designed by Free CSS Templates.