Da das Prinzip der Schnittstellentrennung vorschlägt, sollte kein Client gezwungen werden, sich auf Methoden zu verlassen, die er nicht verwendet. Daher sollte ein Client keine leere Methode für seine Schnittstellenmethoden implementieren, andernfalls sollte diese Schnittstellenmethode in eine andere Schnittstelle eingefügt werden.
Aber wie wäre es mit konkreten Methoden? Sollte ich die Methoden trennen, die nicht jeder Client verwenden würde? Betrachten Sie die folgende Klasse:
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;
}
}
Im obigen Code verwendet CarShop die Methode isQualityPass () in Car überhaupt nicht, sollte ich isQualityPass () in eine neue Klasse aufteilen:
public class CheckCarQualityPass{
public boolean isQualityPass(Car car){
}
}
um die Kopplung von CarShop zu reduzieren? Weil ich einmal überlege, ob isQualityPass () zusätzliche Abhängigkeit benötigt, z.
public boolean isQualityPass(){
HttpClient client=...
}
CarShop würde von HttpClient abhängen, auch wenn es HttpClient eigentlich nie verwendet. Meine Frage lautet also: Sollte ich nach dem Prinzip der Schnittstellentrennung konkrete Methoden trennen, die nicht jeder Client verwenden würde, damit diese Methoden nur dann vom Client abhängen, wenn der Client sie tatsächlich verwendet, um die Kopplung zu verringern?
Car
Klasse haben, über die nicht alle Benutzer Bescheid wissen sollen, erstellen Sie (mehr als eine) Schnittstelle , die von der Car
Klasse implementiert wird und die nur Methoden deklariert, die im Schnittstellenkontext nützlich sind.