Arabirim ayırma ilkesi, hiçbir istemcinin kullanmadığı yöntemlere bağımlı olmaya zorlanmamasını önerdiğinden, bir istemci arabirim yöntemleri için boş bir yöntem uygulamamalıdır, aksi takdirde bu arabirim yöntemi başka bir arabirime yerleştirilmelidir.
Peki somut yöntemlere ne dersiniz? Her müşterinin kullanamayacağı yöntemleri ayırmalı mıyım? Aşağıdaki sınıfı düşünün:
public class Car{
....
public boolean isQualityPass(){
...
}
public int getTax(){
...
}
public int getCost(){
...
}
}
public class CarShop{
...
public int getCarPrice(int carId){
Car car=carList[carId];
int price=car.getTax() + car.getCost()... (some formula);
return price;
}
}
Yukarıdaki kodda, CarShop isQualityPass () yöntemini yeni bir sınıfa ayırmam gerekirse, Car'da isQualityPass () yöntemini kullanmaz:
public class CheckCarQualityPass{
public boolean isQualityPass(Car car){
}
}
CarShop bağlantılarını azaltmak için? Çünkü bir kez isQualityPass () ekstra bağımlılık gerekiyorsa düşünüyorum, örneğin:
public boolean isQualityPass(){
HttpClient client=...
}
CarShop, aslında HttpClient'i asla kullanmasa bile HttpClient'e bağlı olacaktır. Yani sorum şu: Arayüz ayırma prensibine göre, her müşterinin kullanamayacağı somut yöntemleri ayırmalı mıyım, böylece bu yöntemler kuplajı azaltmak için sadece müşteri gerçekten kullandığında müşteriye bağlıdır?
Car
sınıfınızda (tüm) kullanıcıların bilmesini istemediğiniz bir yönteminiz varsa , sınıfın uyguladığı (birden fazla) arabirim oluşturun ve Car
bu arabirim yalnızca arabirimler bağlamında yararlı yöntemler bildirir .