Harun Özer


Proje veya dijital katalog yaptırmak için
iletişim formu doldurabilirsiniz..

<< UML Sınıf Diyagramı (Class Diagram) | Open Closed Principle -Açık Kapalı Prensibi>>

Loose Coupling Prensibi

Yazar harunozer 29 October 2013

Loose Coupling Prensibi Loose Coipling ilkesi nesneler arasında ki bağın zayıf olması gerektiği ilkesidir. Böylece yapının genişletilebilir olması sağlanır.

Eğer bir nesne çalışmak için mutlaka belli bir nesneye ihtiyaç duyuyorsa ve tek başına anlamsızsa öteki nesneye sıkı bağ ile bağlıdır. Yani birinde olan değişiklik ötekini de etkiler. Bu da bakımı zorlaştırır ve zamanla kod karmaşasına neden olabilir. Örneğin; bir editör yapıyor olalım ve kendi user kontrollerimiz olsun ve bunları sahneye ekleme işlemi yapıyor olalım.

class Picture 
{
   public void Draw() 
      {
         Console.WriteLine("Sahneye Çiziliyor.");
      }
 
   public void Move()
      {
         Console.WriteLine("Sahnede Taşınıyor.");
      }
}
 
class PictureCreator
{
      Picture p;
      public PictureCreator(Picture pic)
      {
            p = pic;
      }
 
      public void Draw()
      {
            p.Draw();
      }
 
      public void Move()
      {
            p.Move();
      }
}
 
class Program
{
      static void Main(string[] args)
      {
            PictureCreator pc = new PictureCreator(new Picture());
            pc.Draw();
            pc.Move();
            Console.ReadKey();
      }
}

Örneğimizde PictureCreator sınıfı Picture sınıfı ile sıkı bağ ile bağlıdır. Picture sınıfı olmadan hiçbir işe yaramaz ve sonradan Sound kontrolü yazacağımızı düşünürsek onun için de SoundCreator gibi bir nesne oluşturmamız gerekir. Şimdi yapıyı değiştirerek bu sınıflar arasında ki bağı zayıflatalım. 

 

interface IControl
    {
        void Draw();
        void Move();
    }
 
    class Picture : IControl
    {
        public void Draw()
        {
            Console.WriteLine("Picture Sahneye Çiziliyor.");
        }
 
        public void Move()
        {
            Console.WriteLine("Picture Sahnede Taşınıyor.");
        }
    }
 
    class Sound : IControl
    {
        public void Draw()
        {
            Console.WriteLine("Sound Sahneye Çiziliyor.");
        }
 
        public void Move()
        {
            Console.WriteLine("Sound Sahnede Taşınıyor.");
        }
    }
 
    class ControlCreator
    {
        IControl c;
        public ControlCreator(IControl cont)
        {
            c = cont;
        }
 
        public void Draw()
        {
            c.Draw();
        }
 
        public void Move()
        {
            c.Move();
        }
 
    }
 

Loose Coupling e uygun yazdığımız 2. örneğimizde IControl isimli bir interface yazıp Picture sınıfını bu interface den türettik. PictureCreator sınıfın yerine ise bu IControl interface üzerinden işlem yapacağı şekle getirdik. Böylece yeni kontroller eklendiğinde (Sound kontrolü gibi) bu kontrolü için de işlem yapabilir duruma getirdik.

Örnek kodu aşağıdaki linkden indirebilirsiniz.

LooseCouplingSample.rar

Tam Sayfa
Tags tasarım desenleri,
Kategoriler Tasarım Prensipleri
İşlemler
Bu Makale 0  Kez Beğenildi.
İsim :    
e-Mail :    
Web Site :  
İmage :  
Güvenlik Kodu :  

Güvenlik Resmi
Resmi Yenile
    
Yorum :  
Tasarım Desenleri ve Mimarileri