OOP'de gelişirken, bazen değiştiremeyeceğiniz bir kütüphane tarafından bir arayüz / sözleşme verilir. Bu arayüze J diyelim.
Artık bu arabirimi uygulayan nesneleri tüketen A sınıfı bir nesneniz var. Inside Arayüz tanımlarının sadece küçük bir kısmına ihtiyaç vardır. Bazı nesne sınıfları proje sırasında benim tarafımdan oluşturuldu (bunlardan birine D tipi diyelim), bu yüzden J arayüzü içindeki her şeyin uygulanmasında bir yük var.
J arayüzünde işlevselliğin bir alt kümesini uygulamak istiyorum, ancak şimdiye kadarki çözümlerim beni tatmin etmiyor:
- J'nin her yönünü uygulamak ve sonra "notImplementedExceptions" atmak nesnelerimin kullanıcısını yanlış bilgilendiriyor: D tipi nesnelerimin arayüz J'ye uyduğu görülüyor, ancak bunlar - ve nesnelerimin diğer tüketicilerini (arayüz uygulayan nesneleri kabul eden) J) nesnelerimin bütünlüğüne güvenemez.
- Yeni tanımlanmış bir arabirim uygulamak, yalnızca arabirim J kendi arabirimimle tamamen uyumlu olmasına rağmen, yalnızca arabirim J'yi uygulayan nesneleri kullanmamı yasaklıyor.
- Özel nesnelerimin J arabirimini uygulamasına izin vermek, tüm bu işlevlere ihtiyaç duymadıkları için önemli ek yükler yaratacaktır.
J arayüzünü değiştirebildiğimde, J arayüzünün işlevselliğinin bu alt kümesine sahip olan bir "süper arayüz" K yaratacağım ve J arayüzünü K arayüzünden devralabilirdim. Ama J arayüzünü değiştiremiyorum.
Bu soruna nesne yönelimli bir çözüm nedir? En iyi çözüm hala "sadece" arayüz J'yi uyguluyor mu? Veya bir arabirimi değiştirmeden "üst sınıf" yapmanın OOP yolları var mı?