Ana içeriğe atla

C# Generic Singleton Pattern

Bu yazımda C# programlama dilinde Generic Singleton Pattern'nin uygulanmasını anlatacağım. Konuyu sadece kodları kopyalamak için bakıyorsanız biraz aşağı kaymanız yeterli olacaktır. Ama yazdığınız kodların ne anlama geldiğini bilmek bu kodlardan doğabilecek problemlerin veya bu kodların sizi kazandırdığını da doğru yorumlama açısından önemli olduğu için makaleyi de okumanız önemlidir.



Öncelikle kısaca bahsetmem gerekirse generic singleton tasarım deseni nesne üretiminde singleton patternini uygularken sizi kopyala yapıştır mantığından kurtaran ve bir anlamda kod kalitenizi artırarak okunabilirliğini de artıran bir tasarım kalıbıdır. Generic Singleton Pattern sizi sürekli singleton patterninin private constructor ve instance objelerini yazmanızdan kurtarır.

Önemli bir nokta singleton tasarım kalıbını çok iyi anlamanızın gerektiğidir. Daha önce yazdığım "Singleton Tasarım Deseni" makalesine buradan erişebilirsiniz. Singleton konusunu tam olarak anladıysanız devam etmenizi öneririm.

Makalenin devamında generic singleton tasarım deseni kodlarına ve aynı zamanda nasıl uygulandığına yer vermeye çalışacağım.

C# Generic Singleton Tasarım Deseni

    public abstract class Singleton<T> where T : class
    {
        protected static readonly object SyncRoot = new Object();

        private static volatile T _instance;

        public static T Instance
        {
            get
            {
                if (_instance == null)
                {
                    lock (SyncRoot)
                    {
                        if (_instance == null)
                        {
                            Type theType = typeof(T);
                            try
                            {
                                _instance = (T)theType.InvokeMember(theType.Name, BindingFlags.CreateInstance | BindingFlags.Instance | BindingFlags.NonPublic, null, null, null, CultureInfo.InvariantCulture);
                            }
                            catch (MissingMethodException ex)
                            {
                                throw new TypeLoadException(string.Format(CultureInfo.CurrentCulture, "The type '{0}' singleton tasarım örüntüsünde private constructor kullanılmalı.", theType.FullName), ex);
                            }
                        }
                    }
                }
                return _instance;
            }
        }
    }


C# Generic Singleton Tasarım Deseni Uygulaması
Singleton olarak tasarlamak istediğiniz sınıfı aşağıdaki örnekte olduğu gibi düzenlerseniz o sınıfa singleton özelliği kazandırmış olacaksınız.

public class LoggingManager : Singleton<LoggingManager>
{

    private static readonly JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
    private LoggingManager()
    {
    }


    public void LogWebApiRequest(RequestLogProxy requestLogProxy)
    {
        //Kodlar
    }
}

Yorumlar

Bu blogdaki popüler yayınlar

Azərbaycan Dilində Vurğu Qəbul Etmeyen Şekilçiler

Sözlərdə hecalardan birinin digərlərinə nisbətən daha qüvvətli deyilməsinə heca vurğusu deyilir. Üzərinə vurğu düşən hecaya isə vurğulu heca deyilir. Azərbaycan dilində vurğu adətən söz sonuna düşür. Söz şəkilçi qəbul ederkən vurğu adətən şəkilçinin üzərinə keçir. Məsələn: çiç ə k - çiçəkl ə r - çiçəklərd ə n məkt ə b - məktəbl i - məktəblil ə r - məktəblilərd ə n Buna baxmayaraq dilimizdə bir sıra şəkilçilər var ki onlar vurğu qebul etmirlər. Bu məqalədə Azərbaycan dilində vurğu qebul etməyən şəkilçilər incələnəcək ve bu şekilçilərin hansı hallarda vurğu qebul edib hansı hallarda vurğu qebul etmediyi araşdırılacaqdır. Eyni zamanda bildirmək istəyirəm ki vurğu ilə bağlı daha geniş və ətraflı məlumat üçün Azərbaycan Dilində Vurğunun Praktik Məsələləri adlı məqaləyə də nəzər yetirə bilərsiniz.  1. İsimlərdəki şəxs(xəbərlik) şəkilçiləri Məsələn: müəli'məm müəli'msən müəli'mdir müəli'mik müəli'msiniz müəli'mdirlər Qeyd: -dır4 ...

Ağaçlar Kireçle veya Badana İle Neden Boyanır?

Ağaçlar kireçle boyanmasının veya badana yapılmasının hem çevreye hem de doğaya, ağaçlara faydası var. Bu makalede bu geleneği enine boyuna tartışmaya çalıştık. Ağaca zarar veren mikrop ve bakterileri öldürür. Ağacı çok aşarı soğuk havalarda ve çok aşırı sıcak havalarda korur. Ağacın çürümesini ve kurtlanmasını önler. Ağacın gövdesinin alabileceği zararları en az düzeyde düşürmeyi sağlar. Hoş, güzel, hijyenik, temiz pırıl pırıl bir görüntü oluşturur. Ayrıca çok sıcak havalarda da ağacı yanmaya karşı korumak. En büyük etkisi soğuk havalarda ağacı don vurmalarına karşı korumak . Küresel ısınma göz önüne alındığında mevsim değişiklikleri ani don, ani ısı artışları ve azalışları sonucunun doğuracağı etkenler için yararlı etkin bir yöntem. Gövdeden obur dalların çıkmasını azaltmak için sürülür. Kireçleme ağaçları güneş yanığından korumak için yapılıyor. Ağaçlar da güneşten yanabiliyorlar. Bu arada odun dokudaki gözenekleri doldurarak kapattığı için, zararlıların yuv...

Sözlerde Vurğunun Yerini Necə Tapmaq Olar?

Azərbaycan dilindəki her hansı sözdə vurğunun yerini tapmaq üçün sözü hecalara ayırmadan nisbətən qüvvətli demək lazımdır. Çünki vurğulu heca tələffüz zamanı özünü asanlıqla biruzə verir. Onu da bilmək lazımdır ki, hecalara ayrılarkən sözdəki bütün hecalar eyni tonda tələffüz olunur. Vurğunu asand tapmaq üçün sözü sərbəst şəkildə tələffüz edib, hecaları nisbətən qüvvətli demək lazımdır. Tələffüz zamanı vurğu ilə bərabər sözün düzgün tələffüzü üst-üstə düşərsə bu heca vurğulu hecadır. Bu açıqlamalardan sonra qısaca sözlərdə vurğunu yerini nece tapmaq olar sualının cavablaya bilmək üçün vurğunun məntiqini başa düşmək lazımdır. Vurğu sözdə bir hecanın digər hecalara görə daha qüvvətli deyilməsinə deyilir. Onda vurğunun yerini düzgün tapmaq üçün sırayla sözdeki bütün hecalar digərlərinə nisbətən daha qüvvətli tələffüz olunur. Eger bu qüvvətli tələffüzlərdən biri bu sözün normal tələffüzü ilə örtüşərsə, onda bu heca vurğulu hecadır. Qeyd edek ki, sözlərdə vurğu '  işarəsi ilə göstər...