由于接口隔离原则表明,不应强迫任何客户端依赖其不使用的方法,因此客户端不应为其接口方法实现空方法,否则应将此接口方法放入另一个接口。
但是具体方法呢?我应该分开不是每个客户都会使用的方法吗?考虑以下类别:
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根本不在Car中使用方法isQualityPass(),我应该将isQualityPass()分离到一个新类中:
public class CheckCarQualityPass{
public boolean isQualityPass(Car car){
}
}
为了减少CarShop的耦合?因为我认为如果isQualityPass()需要额外的依赖,例如:
public boolean isQualityPass(){
HttpClient client=...
}
即使实际上从未使用HttpClient,CarShop也将依赖HttpClient。所以我的问题是:根据接口隔离原则,我是否应该分离并非每个客户端都会使用的具体方法,以便这些方法仅在客户端实际使用时才依赖客户端,以减少耦合?
Car
类中有一个不希望(所有)用户知道的方法,则创建(多个)该类实现的接口,该接口Car
仅声明在接口上下文中有用的方法。