Ponieważ zasada segregacji interfejsów sugeruje, że żaden klient nie powinien być zmuszany do polegania na metodach, których nie używa, więc klient nie powinien implementować pustej metody dla swoich metod interfejsu, w przeciwnym razie ta metoda interfejsu powinna zostać umieszczona w innym interfejsie.
A co z konkretnymi metodami? Czy powinienem oddzielić metody, których nie używałby każdy klient? Rozważ następującą klasę:
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;
}
}
w powyższym kodzie CarShop w ogóle nie używa metody isQualityPass () w Car, czy powinienem oddzielić isQualityPass () do nowej klasy:
public class CheckCarQualityPass{
public boolean isQualityPass(Car car){
}
}
w celu zmniejszenia sprzężenia CarShop? Ponieważ raz myślę, że isQualityPass () potrzebuje dodatkowej zależności, np .:
public boolean isQualityPass(){
HttpClient client=...
}
CarShop zależałby od HttpClient, nawet tak naprawdę nigdy nie używa HttpClient. Więc moje pytanie brzmi: zgodnie z zasadą segregacji interfejsów, czy powinienem oddzielić konkretne metody, których nie używałby każdy klient, aby metody te zależały od klienta tylko wtedy, gdy klient faktycznie korzysta, aby zmniejszyć sprzężenie?
Car
klasie metodę , o której nie chcą (wszyscy) użytkownicy wiedzieć, to stwórz (więcej niż jeden) interfejs, który Car
implementuje klasa, która deklaruje tylko metody przydatne w kontekście interfejsów.