Interface Segregation Principle (ISP) – Arayüz Ayırma Prensibi

Kas 17th, 2009 | Yazar: Özcan Acar | Kategori: Tasarım Prensipleri

Birbiriyle ilişkili olmayan birçok metodu ihtiva eden büyük bir interface sınıf yerine, birbiriyle ilişkili (cohesive) metotların yer aldığı birden fazla interface sınıfı daha makbuldür.
ISP uygulanmadığı taktirde, birden fazla sorumluluğu olan interface sınıflar oluşur. Zaman içinde yüklenen yeni sorumluluklarla bu interface sınıflar daha da büyür ve kontrol edilemez bir hale gelebilir. Bunun bir örneğini resim 1 de görmekteyiz.

Resim 1 de yer alan Connector interface sınıfı bünyesinde JMS (Java Message Service) için gerekli iki metot bulunmaktadır: commit ve rollback. Bu metodlarin RMIConnector implementasyonunda implemente edilmeleri anlamsız olur. Büyük bir ihtimalle RMIConnector sınıfında bu metotların implementasyonu kod 1 de yer aldığı şekilde olacaktır.


package shop;

public class RMIConnector implements Connector
{

	public void commit()
	{
		throw new RuntimeException("not implemented");
	}

	public void rollback()
	{
		throw new RuntimeException("not implemented");
	}
}

Kod 1 de yer alan yapı LSP ile uyumlu değildir. Connector sınıfını kullananlar RuntimeException oluşabileceğini göz önünde bulundurmak zorunda bırakılmaktadırlar.

ISP uygulandığı taktirde resim 1 de yer alan Connector interface sınıfını yok ederek, yerine sorumluluk alanları belli iki yeni interface sınıf oluşturabiliriz. Resim 2 de bu çözüm yer almaktadır.

Programcı olarak bir interface sınıfa birden fazla sorumluluk yüklememek için, interface sınıfın sistemdeki görevini iyi anlamamız gerekmektedir. Bu sadece bir sorumluluk alanı olan bir interface sınıf oluşturmamızı kolaylaştıracaktır.

Bu yazıyı PDF dosyası olarak aşağıdaki linkten edinebilirsiniz.

  Interface Segregation Principle (ISP) -Arayüz Ayırma Prensibi (39 KiB, 983 yükleme)


EOF (End of Fun)
Özcan Acar

  • Share/Bookmark

2 yorum | 4.928 kez okundu |

1 Yıldız2 Yıldız3 Yıldız4 Yıldız5 Yıldız (2 değerlendirme, ortalama: 5, toplam oy 5)
Loading ... Loading ...
Tags: ,

RSS feed | Trackback URI

2 Yorum »

Yorum yapan: hakdogan
2009-11-17 22:26:20

Özcan bey değerli çalışmalarınızı ilgi ile takip ediyorum ve katkılarınızın paylaşımınızın devamını diliyorum…

 
İsim (gerekli)
E-posta (gerekli - kimseye gösterilmez)
Websayfanız
Yorumunuz (küçült | büyüt)
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> kullanabilirsiniz.

Trackback Listesi