인터페이스 분리 원칙에 따르면 클라이언트가 사용하지 않는 메소드에 의존해서는 안되므로 클라이언트는 인터페이스 메소드에 대해 빈 메소드를 구현해서는 안되며, 그렇지 않으면이 인터페이스 메소드를 다른 인터페이스에 배치해야합니다.
그러나 구체적인 방법은 어떻습니까? 모든 고객이 사용하지 않는 방법을 분리해야합니까? 다음 클래스를 고려하십시오.
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;
}
}
위의 코드에서 CarShop은 isQualityPass ()를 새 클래스로 분리하면 Car에서 isQualityPass () 메소드를 전혀 사용하지 않습니다.
public class CheckCarQualityPass{
public boolean isQualityPass(Car car){
}
}
CarShop의 커플 링을 줄이기 위해? isQualityPass ()에 추가 종속성이 필요한 경우 한 번 생각하기 때문에 예를 들면 다음과 같습니다.
public boolean isQualityPass(){
HttpClient client=...
}
CarShop은 HttpClient를 실제로 사용하지 않더라도 HttpClient에 의존합니다. 따라서 내 질문은 인터페이스 분리 원칙에 따라 모든 클라이언트가 사용하지 않는 구체적인 방법을 분리하여 커플 링을 줄이기 위해 클라이언트가 실제로 사용할 때만 클라이언트에 의존하도록해야합니까?
Car
클래스에 모든 사용자가 알기를 원하지 않는 메소드가있는 경우 클래스가 구현하는 인터페이스 를 하나 이상 작성 Car
하여 인터페이스 컨텍스트에서 유용한 메소드 만 선언하십시오.