Interface Segregation Principle - ISP

C# Da Interface Segregation Principle Kullanımı

Interface Segregation Principle - ISP

Bir interface tasarlarken interface’in içereceği tüm elemanları bir interface içerisinde toplamak yerine bunları işlevlerine göre guruplandırmak ve farklı interface’ler içerisine dağtımak olarak tanımlanabilir. Pek çok elemanı olan büyük interface’ler yerine, işlevsel ayrım yapılarak guruplanan birden fazla interface kullanmak ilkenin savunduğu düşüncedir.

Sınıflar şablon olarak kullandıkları Interface’in tüm özelliklerini uygulamak zorundadır. Fakat kimi zaman interface üzerinde tanımlı yapıların tümüne ihtiyaç duymamakta kullanmamaktadır.

Sınıflar uyguladıkları interface’lerin tüm öğelerine ihtiyaç duymuyor, kullanmıyorsa bu Interface Segregation ikesine aykırıdır ve sınıflar bu inteface’leri uygulamamalıdır.

Bunun yerine interface’in elemanlarını işlevlerine göre ayırarark guruplandırmak ve bunları farklı interface’ler içerisine dağıtmak gerekiyor. Böylece sınıfların kullanmadıkları elemanları uygulama zorunluluğu kalkar ve bu elemanlar program içerisine eklenmemiş olur.

public interface IArac

{

void IleriGit(); void GeriGit(); void SagaDon(); void SolaDon();


void KaradaGit(); void SudaGit(); void HavadaGit();

}

 

Örneğimizde IArac isimli bir Interface Arac1, Arac2 ve Arac3 sınıflarına uygulanmaktadır. Arac1 kara, Arac2 deniz ve Arac3 hava taşıtıdır. 3 araç tipi içinde yön komutları ortaktır.

Fakat diğer elemanlar ortak değildir. Her araç kendi ortamında çalışır. Örneğin bir araba uçamaz. Arac1 sınıfına bu interface uygulandığında SudaGit() ve HavadaGit() metotlarını içermek zorundadır. Bu elemanlar kara taşıtı olan Arac1 için fazladan gereksiz şeylerdir.

Bu yapıyı Interface Segregation ikesine uygun hale getirelim.

Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git