Como el principio de segregación de interfaz sugiere que ningún cliente debería verse obligado a depender de métodos que no utiliza, por lo que un cliente no debe implementar un método vacío para sus métodos de interfaz, de lo contrario, este método de interfaz debe colocarse en otra interfaz.
¿Pero qué hay de los métodos concretos? ¿Debo separar los métodos que no todos los clientes usarían? Considere la siguiente clase:
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;
}
}
en el código anterior, CarShop no utiliza el método isQualityPass () en Car, si separo isQualityPass () en una nueva clase:
public class CheckCarQualityPass{
public boolean isQualityPass(Car car){
}
}
para reducir el acoplamiento de CarShop? Porque creo que una vez si isQualityPass () necesita dependencia adicional, por ejemplo:
public boolean isQualityPass(){
HttpClient client=...
}
CarShop dependería de HttpClient incluso si nunca usa HttpClient en realidad. Entonces mi pregunta es: de acuerdo con el principio de segregación de interfaz, ¿debería separar métodos concretos que no todos los clientes usarían, de modo que esos métodos dependan del cliente solo cuando el cliente realmente lo use, para reducir el acoplamiento?
Carclase que no desea que (todos) los usuarios conozcan, cree (más de una) interfaz que la Carclase implemente y que declare solo métodos útiles en el contexto de las interfaces.