скажем, у меня есть интерфейс, как показано ниже
public interface ConditionChecker {
boolean isInCondition(Person p);
}
Я хочу создать новый класс, реализующий интерфейс выше, но мне нужно реализовать функцию с другим параметром
public class MacroConditionChecker implements ConditionChecker {
public boolean isInCondition(Person p, MacroView mv);
}
Две проблемы:
Одна: если я изменяю сигнатуру интерфейса на boolean isInCondition(Person p, MacroView mv);
, тогда мне нужно обновить все классы, реализующие ConditionChecker
Две: я хочу, чтобы потребители ConditionChecker просто вызывали isInCondition как есть
Я думаю, это означает:
public class MacroConditionChecker implements ConditionChecker {
private static final MacroView mv;
public MacroConditionChecker(MacroView mv) {
this.mv = mv;
}
public boolean isInCondition(Person p){
// now i have access to MacroView
}
}
, поэтому единственное, что мне нужно, это сделать, когда я решу использовать MacroConditionChecker, и вызов isInCondition не изменится
Я включенправильный путь?или есть еще способ сделать это?
или я должен выделить MacroView как его собственный интерфейс
public class MacroConditionChecker implements ConditionChecker implements MacroView