Poiché il principio di separazione delle interfacce suggerisce che nessun client dovrebbe essere costretto a dipendere da metodi che non usa, quindi un client non dovrebbe implementare un metodo vuoto per i suoi metodi di interfaccia, altrimenti questo metodo di interfaccia dovrebbe essere inserito in un'altra interfaccia.
Ma per quanto riguarda i metodi concreti? Devo separare i metodi che non tutti i client dovrebbero usare? Considera la seguente classe:
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;
}
}
al codice precedente, CarShop non usa affatto il metodo isQualityPass () in Car, dovrei separare isQualityPass () in una nuova classe:
public class CheckCarQualityPass{
public boolean isQualityPass(Car car){
}
}
per ridurre l'accoppiamento di CarShop? Perché penso una volta se isQualityPass () ha bisogno di una dipendenza extra, ad esempio:
public boolean isQualityPass(){
HttpClient client=...
}
CarShop dipenderebbe da HttpClient anche se non usa mai HttpClient. Quindi la mia domanda è: secondo il principio dell'interfaccia-segregazione, dovrei separare i metodi concreti che non tutti i client userebbero, in modo che quei metodi dipendano dal client solo quando il client effettivamente lo usa, al fine di ridurre l'accoppiamento?