SQL LIFE

C# Singleton Design pattern Kullanımı

Singleton pattern Nedir? Singleton Pattern Kullanımı
Bu yazımda singleton design pattern in c#, c# singleton design pattern kullanımı konusunu inceleyeceğim.  

Öncelikle design pattern nedir?

yazılım dünyasında, sürekli meydana gelen problemlere tekrarlanabilir çözüm sunan tasarım kalıplarıdır. programlama dillerinden bağımsızdır.
yazılımın etkili, verimli ve esnek yapıya kavuşmasını sağlar. Design pattern lar(Tasarım kalıpları), test edilmiş ve kanıtlanmış geliştirme paradigmaları sağlayarak geliştirme sürecini hızlandırabilir

Kısava design pattern'dan bahsettikten sonra artık giriş yapalım, Bu konu 2 makaleden oluşacak ve ilkiyle başlıyorum ve ayrıca farklı design pattern ‘ları konu alan makaleler de paylaşacağımı şimdiden belirteyim.
 

Singleton modeli, global şekilde erişilen kendisinin sadece tek bir nesnesini oluşturmasına izin verecek şekilde tasarlanan sınıf örneğidir.
Bu yaklaşım prensip olarak, sadece bir instance (örnek) oluşturulmasını sağlar ve sadece ihtiyaç olduğunda yapar.

 
Singleton design pattern avantajları nelerdir?

  • Bir kaynağa birden fazla client tarafından erişim varsa singleton eşzamanlı erişimleri yönetir.

  • Hedeflenen nesneye tek yerden erişim noktası sağlar.

  • Ağır bir nesneyi tekrar tekrar oluşturmanıza gerek kalmaz, buu ek yükü ortadan kaldırır.

  • Uygulamanızda çok nadir değişen veya değişmeyen bir ana veriyi paylaşma yöntemi olarak tercih edilebilir.

  • Lazy loading ve eager loading yapıları uyarlanabilir.

  • Thread safe çalışabilir.

 
 
Log görevini yerine getiren sınıflarda, database sınıflarında, servis proxy’lerinde, sabit konfigürasyonlar verilerini paylaşımlarda, cache işlemlerinde kullanılabilir.
Singleton design pattern’ı teorik açıdan anlattık şimdi de bu teorinin koda yansıtılışına bakalım:
Not olarak düşelim; eğer singleton bir sınıf istiyorsak, c# neden sealed keyword kullanmamızı söylüyor? Cevabını yoruma yazabilirsiniz.
 

public sealed class Singleton
    {
        private static int counter 	= 0;
        private static Singleton instance = null;
        public static Singleton GetInstance
        {
            get
            {
                if (instance == null)
                    instance = new Singleton();
                return instance;
            }
        }

        private Singleton()
        {
            counter++;
            Console.WriteLine("Kaç Kez Nesne Oluşturuldu-> " + counter.ToString());
        }
        public void Yazdır(string message)
        {
            Console.WriteLine(message);
        }
    }




Yukarıdaki kod thread safe değil. Tek thread üzerinden çalıştığından dolayı şu an singleton kurallarını ihlal etmiyormuş gibi görünüyor.
Singleton sınıfımızı şu şekilde çağırıyoruz.
 

 

static void Main(string[] args)
        {
           
            Singleton sqllife1 = Singleton.GetInstance;
            sqllife1.Yazdır("Sqllife1");
            Singleton sqllife2 = Singleton.GetInstance;
            sqllife2.Yazdır("Sqllife2");
            Singleton sqllife3 = Singleton.GetInstance;
            sqllife3.Yazdır("Sqllife3");
 
            Console.ReadLine();
 
  }


c# singleton design pattern nedir nasıl kullanılır

Bu yazıda singleton mantığını öğrenmiş olduk. Bir sonraki yazımda thread safe singleton konusunu paylaşacağım, yazıları beğeniyorsanız reklamlara tıklayarak destek olabilirsiniz, görüşmek üzere.
 
 

#
Ezgim Çelik
They didn't know it was impossible, so they did it - Mark Twain