SingleTon Pattern Design (Tek Görüntülü Nesneler)

SingleTon bir nesnenin tek bir görüntüsünün (instance) oluşturulup public olarak kullanılmasıdır.

Örneğin bir db adında sınıfımız (class) olsun. Bunu program başında bir kere türetip kullanmamız performans bakımından yararlıdır.

Bunu statik (static) metodlarla yapabiliriz. Sınıfımızı tutabilmek için statik bir değişken tanımlayalım.

public class DB
{
    public static DB obje = null;
}

Şimdi de bir statik metod tanımlayalım. Geriye nesnenin görüntüsü (instance) oluşmuşsa nesneyi, oluşmamışsa oluşturup nesneyi gönderelim.

    public class DB
    {
        public static DB obje = null;

        public static DB getObje() 
        {
            if (obje == null)
                return obje = new DB();

            return obje;
        }
    }

Bunun testini göstermek içinde yapıcı (construct) bir metod yazalım. Rasgele bir sayı üretip değişkende tutalım.

    public class DB
    {
        public static DB obje = null;

        public int rndSayi = 0;

        public static DB getObje() 
        {
            if (obje == null)
                return obje = new DB();

            return obje;
        }

        public DB() {
            Random rnd = new Random();
            rndSayi = rnd.Next();
        }
    }

Şimdi de iki ayrı değişkende nesnenin tek bir kere görüntüsünün oluştuğunu test edelim. Normal olarak görüntüsünü alalım.

        static void Main(string[] args)
        {
            DB nesne1 = new DB();

            //Rastgele ikinci sayının farklı olması için 100 ms bekle
            Thread.Sleep(100);

            DB nesne2 = new DB();

            Console.WriteLine(nesne1.rndSayi);
            Console.WriteLine(nesne2.rndSayi);

            Console.ReadKey();
        }

Farklı iki sayı üretilecektir.

Şimdi de tek görüntüsünü alalım.

        static void Main(string[] args)
        {
            DB nesne1 = DB.getObje();

            //Rastgele ikinci sayının farklı olması için 100 ms bekle
            Thread.Sleep(100);

            DB nesne2 = DB.getObje();

            Console.WriteLine(nesne1.rndSayi);
            Console.WriteLine(nesne2.rndSayi);

            Console.ReadKey();
        }

Üretilen sayı aynı olacaktır. Çünkü nesnenin bir kere görüntüsü oluşacaktır.

Projeyi Buradan İndirebilirsiniz.

 

Hayırlı Günler. Sağlıcakla kalın.

Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.