Я унаследовал некоторый устаревший код Java (1.4), и это дизайнерское решение появляется регулярно. Я не могу понять, есть ли для этого какая-то цель или причина.
public interface SoapFacade extends iConfigurable{ }
public class SoapFacadeBase implements SoapFacade{
...
}
public class SoapFacadeImpl extends SoapFacadeBase implements SoapFacade{
...
}
Насколько я понимаю интерфейсы (и мои эксперименты подтвердились), Нет никакой цели, чтобы и родитель, и потомок реализовывали один и тот же интерфейс. В этом сценарии все из SoapFacade
реализовано в SoapFacadeBase
, но метод в iConfigurable
реализован в SoapFacadeImpl
. Однако при этом не возникает необходимости иметь SoapFacadeImpl
, реализовывать SoapFacade
.
Есть ли что-то, чего я не знаю об интерфейсах, что могло бы дать этому шаблону какую-то цель или пользу? Есть ли основные издержки, помимо отсутствия ясности, которые должны стимулировать его рефакторинг? Или его нужно просто отремонтировать для ясности / простоты?