I — Interface Segregation Nedir?
Arayüz ayrımı, arayüzlerimizi nasıl tasarlamamız gerektiğini belirleyen bir prensiptir.
ISP, ilk olarak Robert Martin tarafından Xerox’a danışmanlık yaparken kullanıldı. Xerox, zımbalama ve faks gönderme gibi çeşitli görevleri gerçekleştirebilen yeni bir yazıcı dizayn etmişti. Bu sistem için cihazlarda kullanılan yazılım sıfırdan oluşturuldu.
Yazılım yeniden oluşturulurken yazma işlemi dahil makinenin bütün yapabildiği sorumluluklar aynı sınıfa yüklendiği için zaman geçtikçe
kodda değişiklik yapmak giderek daha zor hale geldi bunun yanı sıra en küçük bir değişiklik bile bir saatlik deployment süresine ihtiyaç duyuyordu ve bu da yazılımı geliştirmeyi neredeyse imkansız hale getirmişti.
Bu olayın sonucunda Martin, arayüz Ayrımı ve Bağımlılığı Tersine Çevirme ilkeleri ile yazılımı düzenlemiş ve bu tanrı sınıfını parçalara ayırmıştır.
Bu prensibe göre birimler ihtiyaç duymayacağı method ve değişkenleri kalıtım almamalıdır. Şişman ve uyumsuz sınıflar yerine, küçük ve uyumu yüksek olan sınıflar tercih edilmelidir.
Kodumuzda bunlar var ise ISP’ye uymuyoruz demektir;
- Şişman arayüzler
- NotImplementationException
- Büyük bir arayüzün sadece küçük bir kısmını kullanan bir sınıfımız
Yukarıdaki sorunları büyük olan bu arayüzleri uyumluluklarına göre ayrıştırarak çözümleyebiliriz.