Özgür Belül

x += x++;
posts - 11, comments - 3, trackbacks - 0

Sunday, May 11, 2008

Constructor Overloading

İyi kod kendini mümkün olduğunca az tekrar eden kod dur. Bu düşünceyi constructorlara uygulayacak olursak :

public sealed class Student
    {
        private string _Name, _Surname;
        private byte _Age;

        public byte Age
        {
            get { return _Age; }
            set { _Age = value; }
        }
        public string Surname
        {
            get { return _Surname; }
            set { _Surname = value; }
        }
        public string Name
        {
            get { return _Name; }
            set { _Name = value; }
        }

        public Student() { }

        public Student(string name)
        {
            this.Name = name;
        }
        public Student(string name, string surname) : this(name)
        {
            this.Surname = surname;
        }
        public Student(string name, string surname, byte age) : this(name, surname)
        {
            this.Age = age;
        }
    }
            Student nS = new Student("Özgür", "Belül", 18);
            Console.WriteLine(nS.Age + " " + nS.Name + " " + nS.Surname);

posted @ Sunday, May 11, 2008 11:46 PM | Feedback (0) | Filed Under [ C# ]

Lazy Singleton

Singleton kalıbını doğru bir şekilde kullanmıyorsanız  class içerisinden sadece static method çağırsanız bile instance yaratmış olabilirsiniz. Belki de hiç kullanmayacağınız bu instance bellekte boşu boşuna yer işgal eder. Bu sorunu Singleton kalıbını lazy olarak tasarlarsanız aşabilirsiniz. Aşağıdaki gibi bir kullanımda construtorlara breakpoint koyup Singleton class'ı içerisinden MyMethod1()'i çağırdığınızda instance yaratılmadığını ancak metodun çağırılabilir olduğunu göreceksiniz. Instance sadece gerektiğinde oluşturuluyor.

public sealed class Singleton
    {
        Singleton()
        {
            Console.WriteLine("Singleton contructor çalıştı.");
        }

        public static Singleton Instance
        {
            get
            {
                return Nested.instance;
            }
        }

        public static void MyMethod1()
        {
            Console.WriteLine("MyMethod1 çalıştı..");
        }

        public void MyMethod2()
        {
            Console.WriteLine("MyMethod2 çalıştı..");
        }

        class Nested
        {
            static Nested()
            {
                instance = new Singleton();
                Console.WriteLine("Nested constructor çalıştı");
            }

            internal static readonly Singleton instance;
        }
    }

posted @ Sunday, May 11, 2008 10:27 PM | Feedback (0) | Filed Under [ Design Patterns C# ]

Powered by: