Почему и родитель, и дочерний класс реализует тот же интерфейс?

Я унаследовал некоторый устаревший код 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 .

Есть ли что-то, чего я не знаю об интерфейсах, что могло бы дать этому шаблону какую-то цель или пользу? Есть ли основные издержки, помимо отсутствия ясности, которые должны стимулировать его рефакторинг? Или его нужно просто отремонтировать для ясности / простоты?

29
задан Riggy 14 April 2011 в 19:12
поделиться